PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Macht es Sinn Texturen per Hand vorzufiltern?


Gast
2007-01-22, 04:13:20
Ich habe mal eine Frage bezügl. Texturen für ein 3d Spiel.

In einem 3d Spiel werden die Texturen ja durch die Grafikkarte via Trillinearem Filtering geglättet,
macht es daher überhauot Sinn bei einer Texture
schon im Vorfeld die Textur manuell zu filtern?


Um meine Frage zu konretisieren.
Stellt euch dazu einfach mal eine graue Textur vor.
Auf diese Textur wird jetzt mit einem Bildbearbeitungsprogramm ein roter Kreis gemalt.
Der Kreis hat harte Kanten, die sind also nicht weichgezeichnet.

Würde es hier Sinn machen die Kanten dieses Kreises auf der Textur manuell weichzuzeichen oder spielt das keine Rolle, da in der 3d Grafik die Textur sowieso geglättet werden und bei naher Betrachtung der Textur ein Pixel auf er Textur sowieso mehrere Texel einnimmt bzw. Pixel auf dem Bildschirm.

Spasstiger
2007-01-22, 09:14:14
Macht (in der Regel) keinen Sinn. Wenn du eine Textur mit scharfen Konturen hast, wird diese auch im Spiel scharf sein, solange die Textur auf einen Bildschirmausschnitt mit einer Auflösung kleiner als die Texturauflösung abgebildet wird. Wenn du die Textur vorher unscharf zeichnest, wird sie auch im Spiel immer unscharf sein.

In manchen Fällen kann es evtl. hilfreich sein, bestimmte Texturbereiche bewußt unschärfer zu halten, um Texturflimmern zu verhindern. Aber eigentlich ist das nur eine Notlösung, weil aktuelle Grafikkarten keine besseren Filteralgorithmen aufweisen. Ein perfekter Texturfilter würde kein Flimmern verursachen.

Ein Texturfilter hat ganz prinzipiell die Aufgabe, jedem Bildschirmpixel einen Farbwert von der Textur zuzuweisen. Bei Pointsampling wird einfach jedem Bildschirmpixel genau ein Punkt von der Textur zugewiesen. Wenn die Textur vergrößert dargestellt wird, sieht man halt auch die einzelnen Pixel der Textur. Nicht gerade schick und flimmer/artefaktanfällig ist die ganze Sache auch (Aliasing).

Ein bilinearer Texturfilter bestimmt den Farbwert für jeden Bildschirmpixel aus 4 angrenzenden Texeln (siehe 3DC-Artikel (http://www.3dcenter.org/artikel/grafikfilter/index4.php)). D.h. es muss mehr Rechenaufwand betrieben werden, man erhält aber im Gegenzug ein mathematisch genaueres Ergebnis, das auch weniger Aliasing-anfällig ist. Und man erhält auch automatisch einen weichen Farbübergang zwischen den Texeln, wenn die Textur stark vergrößert dargestellt wird (statt einfarbiger Blöcke).

EDIT: Ein paar Dinge gelöscht, bei denen ich mir nicht mehr sicher bin und die auch nix zum Thema beitragen.

Gast
2007-01-22, 17:37:31
bei texturen wird in der regel jede menge vorgefiltert, nämlich beim mip-mapping, das nimmt der grafikkarte zur laufzeit jede menge arbeit ab.

das was du vor hast macht aber überhaupt keinen sinn, außer du willst unbedingt dass der kreis auch unscharf dargestellt wird.

soll der kreis im spiel scharf sein, muss er das logischerweise auch in der textur sein.

Ein perfekter Texturfilter würde kein Flimmern verursachen.

nicht wirklichk, selbst ein perfekter texturfilter kann nicht alle möglichen texturen auf eine endliche zielauflösung gleichzeitig scharf und flimmerfrei filtern.
eine schachbrettextur aus abwechselnd einem schwarzen und einem weißen texel könnte der beste texturfilter der welt nicht flimmerfrei bringen ohne eine graue suppe zu erzeugen.

Gast
2007-01-22, 18:35:30
Also ich habe jetzt mal als Beispiel ein Bild gezeichnet um meine Frage zu konkretisieren.

Auf dem Bild sind zwei Kreise zu sehen.

Den großen Kreis habe ich nicht weichgezeichnet, der ist also nicht vorgefiltert
und hat somit Ecken, er wirkt nicht wirklich rund.
Das Weichzeichnen würde hier die Grafikkarte machen.


Der kleine Kreis wurde manuell weichgezeichnet,
daher wirkt dieser kreis auch rund.

http://img402.imageshack.us/img402/2461/textur2vf.th.png (http://img402.imageshack.us/my.php?image=textur2vf.png)



Sinn des ganzen ist es, daß der Kreis im Spiel rund und nicht eckig aussieht.
Harte Kanten währen also nicht erwünscht.
Ist das manuelle Weichzeichnen in diesem Fall also notwendig oder braucht man das nicht,
weil die Grafikkarte dank trilinearem Filtering sowieso alles weichzeichnet?

Kinman
2007-01-22, 18:50:03
Nein, die Graka würde den "eckigen Kreis" nicht Weichzeichnen, da er ja in der Textur eckig ist und die Graka versucht die Textur so exakt wie möglich wiederzugeben. Und Kanten an denen Aliasing entsteht sind Polygonkanten und keine Pixel auf einer Textur.

mfg Kinman

Spasstiger
2007-01-22, 19:04:16
http://img402.imageshack.us/img402/2461/textur2vf.th.png (http://img402.imageshack.us/my.php?image=textur2vf.png)



Sinn des ganzen ist es, daß der Kreis im Spiel rund und nicht eckig aussieht.
Harte Kanten währen also nicht erwünscht.
Ist das manuelle Weichzeichnen in diesem Fall also notwendig oder braucht man das nicht,
weil die Grafikkarte dank trilinearem Filtering sowieso alles weichzeichnet?
In diesem Fall nimmst du natürlich die Variate mit der Kantenglättung/dem AntiAliasing (was übrigens nicht einem Weichzeichner entspricht!).
So wie es im Spiel aussehen soll, musst du es auch gestalten.

Um nochmal auf dein Kreisbeispiel zurückzukommen, hab mal selber was vorbereitet:
http://img401.imageshack.us/img401/4963/kreise1ra.png
Der mittlere Kreis ist der Standardkreis mit harter Kante, der linke Kreis ist mit AntiAliasing, der rechte Kreis mit Weichzeichner. In deinem Fall wäre wohl die Variante mit AntiAliasing am Schönsten (du willst ja eine möglichst harte Kante und dennoch einen runden Kreis).

nicht wirklichk, selbst ein perfekter texturfilter kann nicht alle möglichen texturen auf eine endliche zielauflösung gleichzeitig scharf und flimmerfrei filtern.
eine schachbrettextur aus abwechselnd einem schwarzen und einem weißen texel könnte der beste texturfilter der welt nicht flimmerfrei bringen ohne eine graue suppe zu erzeugen.
Ok, das ist wirklich ein Problem. Das ist ja einer von diesen Fällen, wo man sogar durch das menschliche Auge Flimmer- und Aliasingeffekte sieht. Schachbrettmuster und andere stark kontrastreiche, gleichmäßige Muster kommen halt in der Natur nicht vor, das sind rein künstliche Produkte.

Aquaschaf
2007-01-22, 20:25:56
Eigentlich hat das im Eingangsposting beschriebene Problem mit Texturfilterung überhaupt nichts zu tun.

Gast
2007-01-22, 22:30:29
Eigentlich hat das im Eingangsposting beschriebene Problem mit Texturfilterung überhaupt nichts zu tun.

Mit was hat es zu tun?
Klär mich auf.

Kinman
2007-01-23, 10:52:52
Nur mit der Texturerstellung und da ist es eigentlich auch kein Problem mehr.

http://3dcenter.de/artikel/grafikfilter/

mfg Kinman