AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Paar Fragen zu Antialiasing
Thema durchsuchen
Ansicht
Themen-Optionen

Paar Fragen zu Antialiasing

Ein Thema von Popov · begonnen am 12. Jun 2012 · letzter Beitrag vom 13. Jun 2012
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 02:20
NamenLozers dritter Ansatz wird meistens mit Filtern betrieben, die auch Vektorisierer einsetzen (z.B. Faltung mit Sobel-Operator; diskrete genäherte 1. Ableitungen im Allgemeinen). Das dadurch gewonnene Vektorfeld wird über die Längen auf ein Skalarfeld (letztlich praktisch ein Graustufenbitmap) reduziert, dass man als Parameter für einen Unschärfefilter einsetzt (z.B. als Radius für Gauss'sche Unschärfe). Auf GPUs ist dies ziemlich effizient umsetzbar, für die CPU ist das aber auch ein Knüller. Zusammen mit der Tatsache, dass die Ergebnisse auch bei guter Einstellung der Parameter immer eher mäßig aussehen, ist das hier mMn die schlechteste Alternative. Auch wenn sie zunächst lukrativ erscheint, da man an seinen bestehenden Zeichenroutinen nichts verändern müsste.

Das effizienteste ist definitiv das AA direkt beim Zeichnen, vor allem da der Bresenham-Algo ohnehin schon die dazu nötigen Werte "frei Haus" mit produziert. Da es dort auch Anpassungen für Nicht-Geraden gibt, wäre das ein guter Weg. Nachteil: Man müsste entweder eine fertige Lib nutzen die das bereits drauf hat (Graphics32 dürfte da ein netter Vertreter sein), oder selbst bauen. Alpha wird unproblematisch, wenn man es vormultipliziert (Pre-Multiplied Alpha), was die besseren Libs imho auch tun.

Vom Ergebnis her ist, zumindest im ganz allgemeinen Fall, das Oversampling (oder Supersampling) vorzuziehen. Es erfordert auch eher kleine Änderungen an bestehendem Code. So lange man nicht zig temporäre Bitmaps im Hintergrund vorhält (sondern idealerweise alles in Vektor- oder Sprachform bis zum finalen Zeichnen hat), und nicht arg über 16-fach geht, sollte das für aktuelle Systeme auch praktikabel sein. Jedoch nicht, wenn 60fps angestrebt werden
Hier liegt der Teufel eher im Mikromanagement bei Optimierungen, wie z.B. dem nur partiellen Neuzeichnen wenn sich nur Teilbereiche in einem bestehenden Bild ändern. Geschwindigkeitstechnisch alle Male lohnenswert, bedarf dann aber eines "Dran-Denkens" beim Aufbau des gesamten Grafik Subsystems. (So Dinge wie Nachrichten an überschneidend liegende Elemente sich neuzuzeichnen (in der richtigen Reihenfolge) - ein wenig wie es Windows auch bei seinen Controls in ähnlicher Weise macht - fallen mir da spontan ein.)


Letztlich ist da wohl die Frage wie du deine Grafiken bisher malst, was das dann für Bilder sind, und worin das Hauptaugenmerk besteht (Geschwindigkeit, "Schlankheit", Qualität um jeden Preis, ...)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (13. Jun 2012 um 02:24 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 02:52
Alpha wird unproblematisch, wenn man es vormultipliziert (Pre-Multiplied Alpha), was die besseren Libs imho auch tun.
Nein, ich habe selbst eine kleine Grafikbibliothek geschrieben und dabei premultiplied Alpha verwendet; das Problem hat damit überhaupt nichts zu tun.

Angenommen, du hast ein Quadrat mit einem Alpha-Wert von 50%. Jetzt zeichnest du darüber noch mal das selbe Quadrat, ebenfalls mit einem Alpha-Wert von 50%. Das Ergebnis ist ein rotes Quadrat mit einem Alpha-Wert von 75% (völlig korrekt). Das kannst du jetzt mehrfach wiederholen, bis das Quadrat vollständig opak ist. Und genau das passiert mit den halbtransparenten Randpixeln.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 09:50
Aber ist das nicht der gewünschte und physikalisch korrekte Vorgang? Zwei halbtransparente Glasscheiben wirken doch z.B. so.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 09:55
Ja, aber eben nur bei „wirklicher“ Transparenz, nicht bei Kantenglättung.

Wenn du in echt zwei farbige Stäbe direkt übereinanderlegst, werden die ja auch nicht breiter und kantiger
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 17:30
Hm, stimmt. Aber wer tut sowas schon

Zumindest in allen anderen Fällen, in denen nicht 2 Mal das selbe exakt an die selbe Stelle gezeichnet wird (was mein Kopf grad sehr überflüssig finden würde ^^), dürfte das Ergebnis von AA beim Zeichnen und AA via Oversampling vergleichbar sein
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
MrBigmack

Registriert seit: 13. Jun 2012
2 Beiträge
 
#6

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 17:39
Sorry für die dumme Frage, aber wie verfasst man einen neuen beitrag?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Paar Fragen zu Antialiasing

  Alt 13. Jun 2012, 17:44
Wähle die gewünschte Rubrik aus, und dort gibt es dann einen Button, um ein neues Thema zu eröffnen
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:56 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