AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi schneller Panoramaviewer, Überlegungen (Diskussion)
Thema durchsuchen
Ansicht
Themen-Optionen

schneller Panoramaviewer, Überlegungen (Diskussion)

Ein Thema von helgew · begonnen am 28. Dez 2009 · letzter Beitrag vom 27. Jun 2010
 
helgew

Registriert seit: 30. Jul 2008
125 Beiträge
 
#5

Re: schneller Panoramaviewer, Überlegungen (Diskussion)

  Alt 28. Dez 2009, 13:13
Vielen Dank für eure Vorschläge. Natürlich habe ich schon an die Skybox gedacht, aber nun eines nach dem anderen:
Es soll ich um eine Erweiterung der Standardzeichenroutinen handeln, die auf normalen Bitmaps rechnet. So habe ich schon eine Stretchdraw-routine implementiert, die 1600x1200 auf einer alten CPU (1,83 GHz single core "Barton 2500+") in 5-6ms rendert, MMX-optimiertes Alphablending vergleichbarer performance und noch ein paar andere Sachen. Es zählt zu den Anforderungen des Programms, dass es auch auf älteren Systemen gut lauffähig sein soll, daher würden sich schon 32MB und 64MB Grafikkarten an der Skybox eines 8000x4000-Panoramas verschlucken (~72MB für sechs 2000x2000x24bit-Bilder).

Ein weiteres Problem, das sich dabei ergibt, ist die Initialisationszeit. Der Nutzer soll maximal 1 Sekunde warten müssen, bis der Viewport gestartet ist, das geht nur mit Approximationen. 12000x2000 Pixel exakt berechnen dauert sehr, sehr lange. Für eine 50%-Ansicht des angehängten Panoramas (~1600x800) läuft die Berechnung hier schon etwa 650ms. Durch Optimierung wird man es wohl nach viel Arbeit auf 150-200ms herunterprügeln können (mit SSE und Tricks... der SSE-Befehlssatz bietet Wurzeln und trigonometrische Funktionen im Viererpack).
Was das Kugelgerüst abelangt, so haftet diesem leider auch der Speicherverbrauch auf der Grafikkarte an, allerdings lässt sich die Bildfeldwölbung beim zoomen anpassen. Schnell ist es dafür, ja, aber der Rechenaufwand ist nicht geringer und wird nur durch viele Recheneinheiten der GPU getragen.

Zum Erzeugen der Stützstellen für die lookup-Funktionen benötige ich bei dem 8000x4000x24bit Panorama etwa 10-20MB Arbeitsspeicher (die Speicherreservierung benötigt hier etwa 300ms) und anhand meiner bisherigen Implementierung extrapoliert 250-450ms (zwei der sechs Seiten des source lookups rechne ich gerade für 8000x4000 Pixel des Quellbilds in ~30ms).
Die sechs lookup tables, die an die Stelle der Skybox treten, zu deren Rendering ich wiederum Trigonometrie bräuchte, beinhalten nur ~300x300 Stützstellen, die aus 4-5 Koeffizienten bestehen.

Vielleicht sollte ich mein Anliegen in diesem Thread noch präzisieren:
Ich weiß, dass man sich mit der Thematik etwas befassen muss, um mögliche Probleme zu sehen, aber was könnte mich bei den ganzen Interpolationen noch schlimmes erwarten?

Momentan grüble ich über die Interpolationskoeffizienten...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz