3D - Mehrere verschiedene Texturen oder eine, die alle Modelle benutzen können?

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 3D - Mehrere verschiedene Texturen oder eine, die alle Modelle benutzen können?

    Morgen,

    ich versuche gerade bei einem meiner Projekte die Performance zu steigern
    und den auf der Graka verbrauchten Speicher zu verringern.

    Zu meiner Frage:
    Was ist performanter? Eine Textur, auf der die Texturkoordinaten aller Modelle gespeichert
    sind (So in Richtung Texturepack) oder jeweils eine Textur für ein Modell?
    Ich weiß, dass die Eine-Textur-Für-Alles-Methode speicherschonender ist, aber
    ist sie auch schneller, genau so schnell oder vielleicht sogar langsamer?

    Mfg
    Shapow
  • Das ist ein zweischneidiges Schwert zwischen Dynamik und Flexibilität:

    A) Bei der einer gemeinsam benutzten Texturmap:
    PRO: es wird nur eine Headerinformation gelesen sowie einmal der Body-Content. Vektor-Kalkulation muss immerwieder durch ein grosses Array.
    CON: Die Map bleibt bestehend, egal ob es nur ein Model aus sagen wir 10 gibt, welches gerade UV's aus der Map liest. Zuviel Potential, was nich genutzt wird.
    RES: Weniger Überreichen von Bytes und viel mehr Rechnerei über ein einziges, grosses Array aus Integern und Floats

    B) Bei dem einzelnem Zugreifen auf mehrere Maps
    PRO: Modelle, die nicht aktiv sind oder existieren, brauchen auch die dazugehörige Map nicht. Sparrt einiges an Platz. Vektor-Kalkulationen arbeiten mit kleineren Datentypen.
    CON: Headerinformationen und Body-Content werden immerwieder erneut eingelesen in grossen Mengen. Ladezeit dadurch wird länger.
    RES: Viel Überreichen von Bytes und Kalkulation mit kleinere Datenmengen aus Integern und Floats.

    Also... ich denke, du fährst mit Option B) besser, da es sich mehr um das Überreichen von Bytes (von Chip zu Chip) dreht, als das ständige Berechnen mit floats, doubles und Integren
    Grund: Die UV coords sind floats (wenn man sich zum Beispiel mal eine wavefront *.OBJ file reinpfeift). Und wenn'de dann eine map hast mit einem 1024(quadriert) Integer Array, wird's beim errechnen der eigentlichen Koordinaten eine ziemlich grosse Zahl. Hast'de dagegen immerwieder kleinere Arrays (z.B. eine 128quadriert map), werden die daraus resultierenden Daten kleiner und schneller verarbeitet.

    Ich weiss nich ob ich Sinn mache ^^ Aber hier musste dir'n grosses Grid gegen evereinzelnde kleine Grids vorstellen, und ein Grid bedeutet "Zahlen" bis zu [maximal-texturmap-quadriert]. Und eine Byte-map besteh aus einem Grid mit Zellen die nich groesser als 256 sind (das ist in der Computerwelt einfacher zu verdauen.)

    (Edit: kleines Beispiel:
    UV = 0.8765 (float)
    map-size= 1024 (integer) //deine einzelne grosse, gemeinsame map ^^

    Vektor/Grid-Addresse= map-size/UV
    VGA=1168.28 (kann double sein... muss nich unbedingt)

    ZUM VERGLEICH zu einem kleinere Array

    UV=0.8765
    map-size=128 //eine temporaere kleine Map
    VGA=map-size/UV
    VGA=112.19

    wir vergleichen 1168.28 gegen gerade mal 112.19 ...jetzt stellste dir das noch als 3dimensionales Array vor XYZ und dir wird schnell klar wie die Masse an Daten aussieht)

    Also nochma, lieber hin-und-her-laden von bytes und kleineren Datenhaeppchen, als das einmaligen Laden von bytes aber dafuer riesen Datenmassen.

    Darueber laesst sich bestimmt streiten =P

    Ich wette, da werden sich noch ein paar Experten dazu melden. Weil ich mit meiner Theorie hier nur aus begrenztem Wissen auffahre.

    Gruss

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Nightrage ()

  • Da muss ich als CG Artist gleich mal was zu sagen, hehe. ich schaf grad an einem kleinen Auftrag wo ich für ein Browseraufbauspiel Gebäude baue. ich verwende nur eine Textur-Map 1024² als material sozusagen, pro Gebäude. Von der Datei größe ist das exportierte FBX sehr klein ca. 150 kb. dagegen ist die Textur als JPG mit höschter qually 1.3 mb groß.

    Wenn ich es komprimiere, würden fraktale enstehen, hässlig. Und als NPG würde es etwas größer sein. Laut meines Auftraggebers alles im Rahmen. Ich passe die Textur nicht den UVs an sonder andersrum, die UVs der Textur. So bleibt sie sehr scharf so dass ich sogar daran im first person daran vorbai laufen kann, was im Spiel auch möglich sein wird.

    Die Gebäude sind auf meiner seite fals das sehen willst, sind recht komplex. Ich hab da 2-3 hauptmaterialien und dann noch paar kleinere, und dann noch fenster und Tür gerendert und in die Textur mit aufgenommen, für das kleinste Level of Detail.
    Ja LOD ist auch da und dafür wirt immer die gleiche Textur verwendet. die Aufteilung der Materiallien der Textur hier eine verkleinerte version als Beispiel:
    Bilder
    • textur b.jpg

      55,71 kB, 212×212, 348 mal angesehen