Was für containers benützt ihr?



  • hellihjb schrieb:

    Ja und der Overdraw/z-fail liegt in O(n); n == Anzahl der Polygone

    Zeig mal bitte, warum der Overdraw eines Rasterizers linear mit der Anzahl der Polygone steigt.

    Warum denn nicht? Es kann nur ein Polygon das vorderste sein 😉

    Stell dir einen 1x1 Pixel Bildschirm vor. Zeichnest du 100 Polygone im Frustum, hast du 100 z-Tests mit jeweils einem Overdraw/Fail. Zeichnest du 1000, hast du 1000...

    Natürlich können sie bei einer höheren Auflösung auch nebeneinander liegen, aber das Sichtfeld wird ja nicht irgendwie immer weiter, je mehr Polygone es gibt (wir zeichnen wie gesagt die Polygone im Frustum). Das nebeneinander liegen macht also nur einen konstanten Faktor aus. Wo siehst du das Problem?



  • Stell dir einen 1x1 Pixel Bildschirm vor

    In der Praxis steigt der Overdraw wenn die Flaeche eines zu zeichnenden Polygons unter einen Pixel faellt, also mehrere Polygone pro Pixel zu zeichnen sind.
    In Deinem Spezialfall sind das natuerlich alle, denn es gibt nur ein Pixel - Dein Beispiel ist also nicht sonderlich praxistauglich und deckt sich mit meinem Antibeispiel:

    Daraus lernen wir also nur, dass bei einer Aufloesung von 1x1 Pixel ein hierarchischer Raytracer immer schneller ist...



  • Damit habe ich auch nur angefangen. Ich habe gezeigt, dass eine höhere Auflösung daran nichts ändert, außer einem konstanten Faktor. Wieviele Pixel ein Polygon einnimmt, ist außerdem egal. Eine höhere Auflösung bewirkt einfach nur, dass generell mehr Pixel zu zeichnen sind, aber das Verhältnis, welche Fläche wie oft überzeichnet wird, bleibt gleich.

    Es zählen die Screenkoordinaten. Daran dass sie auf -1 bis 1 normalisiert sind, siehst du ja schon, wie egal die Auflösung ist. 😉



  • rapso schrieb:

    @xBlackKnightx wenn du denkst dass das hier komplett von dem abweicht was dich interresiert, sag bescheid und ich splitte es ab 😉

    nun, interessant ist es schon aber es ist für mich alles unbekannt und somit komplex

    ich werd mit einfachen container wie list und vector anfangen und ein bißchen mit Zeitstempel experimentieren lassen, um rauszufinden wie schnell die sind.

    Ist es auch ungewiss was für ein Containter der ObjektManager von Cinema4D benützt? Generell die ganzen 3D-Grafikprogramme. Die haben doch alle diese Objekt-Manager. Wenn man 3D-Objekte, Lichtquellen, Effekte usw hinzufügt sind sie alle in der Liste.



  • Wie gesagt, du musst zunächst einmal eine Anforderungsanalyse machen. Du musst dir genau überlegen, was wie oft auf diesen Containern ausgeführt wird. Zum Beispiel "in jedem Frame muss ich ends viele Objekte darin suchen" oder "in einer bestimmten Reihenfolge durchlaufen". Überlege dir auch, wie oft du Objekte hinzufügst und entfernst.

    Wenn du das bestimmt hast, helfen wir dir gerne, den richtigen Container auszuwählen (oder eine Kombination davon). Auf andere Programme zu schauen nützt dir nichts, wenn sie nicht fast gleiche Anforderungen haben. Du musst etwas suchen, was für deinen Fall geeignet ist.


Anmelden zum Antworten