PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auflösung erhöhen: Mehr Polygone?


Fragender
2003-08-17, 23:24:29
Wenn man in einem Spiel die Auflösung erhöht, bestehen dann die Grafikelemente aus mehr Polygonen oder bleibt die Anzahl gleich und werden nur die Texturen durch höher aufgelöste ersetzt? Falls die Anzahl der Polygone gleich bleibt, müßten ja die "Ecken", die es in der Grafik noch gibt, erhalten bleiben.

Enthält ein Spiel Texturen für alle möglichen Auflösungen oder nur für die höchste (und werden die anderen aus dieser berechnet)?

mapel110
2003-08-17, 23:34:30
zunächst mal bleibt die anzahl der polygone gleich, wenn man die auflösung ändert.
dann sind heutige spiele, was die texturen angeht, auf 1024x768er auflösung optimiert.

was genau mit den texturen bei auflösungserhöhung passiert, weiss ich jetzt auch nicht.

weiter an die experten :)

Gast
2003-08-17, 23:45:03
Was soll sich denn ändern??? Mit "Auflösung erhöhen" ändert man ja nur die Auflösung bei der Rasterung des Bildes (= Abtastung & Mittelung auf eine bestimmte Menge Pixel pro Fläche). Da ändert sich nichts bis auf die Rasterauflösung.

LOCHFRASS
2003-08-17, 23:52:04
Texturen und Geometrie bleiben gleich.

GloomY
2003-08-17, 23:59:51
Original geschrieben von LOCHFRASS
Texturen und Geometrie bleiben gleich. Sicher? Was ist mit dem LOD Bias? Werden bei größeren Auflösungen nicht auch größere Texturen verwendet, sofern vorhanden?

Zeckensack sagte doch mal (ich hoffe mein Gedächnis lässt mich nicht im Stich), dass bei einer Konsole Texturen mit z.B. 2048x2048 gar keinen Sinn hätten, weil diese aufgrund der geringen Fernsehbildauflösung (ca. 512x512) immer kleinere Mipmaps verwendet würden. 4 Texel auf einem Pixel würde sicher zu großem Texturflimmern führen, Texturfilter hin oder her...

Fragender
2003-08-18, 00:11:17
Original geschrieben von LOCHFRASS
Texturen und Geometrie bleiben gleich.

Das würde dann ja bedeuten, dass man trotz höherer Auflösung nicht mehr Details bekommt. Welchen Sinn hätte dann noch eine höhere Auflösung, außer weniger Treppeneffekte zu bekommen, die man ja auch bei niedrigerer Auflösung mit AA ganz gut vertuschen kann?

mapel110
2003-08-18, 00:18:49
Original geschrieben von Fragender
Das würde dann ja bedeuten, dass man trotz höherer Auflösung nicht mehr Details bekommt. Welchen Sinn hätte dann noch eine höhere Auflösung, außer weniger Treppeneffekte zu bekommen, die man ja auch bei niedrigerer Auflösung mit AA ganz gut vertuschen kann?

AA funzt aber nicht überall. afaik zb nicht direkt an polygonkanten. und auch bei gewissen winkeln bringt eine auflösungserhöhung mehr, als blosses AA.

aths könnte dazu sicher jetzt hier nen ganzes buch schreiben =)

jedenfalls ist auflösung auch wichtig für texturen.

Gast
2003-08-18, 00:19:41
Original geschrieben von Gast
Was soll sich denn ändern??? Mit "Auflösung erhöhen" ändert man ja nur die Auflösung bei der Rasterung des Bildes (= Abtastung & Mittelung auf eine bestimmte Menge Pixel pro Fläche). Da ändert sich nichts bis auf die Rasterauflösung.

Und wenn man eine größere Menge Pixel pro Fläche haben will, fragt man sich: Wo kommt die größere Menge her? Da bieten sich mehr Polygone an oder aber die gleiche Anzahl von Polygonen und höher aufgelöste Texturen. Wenn man die Anzahl der Polygone und die Auflösung der Texturen gleich ließe - wo sollen dann mehr Pixel pro Fläche herkommen?

Endorphine
2003-08-18, 00:29:05
Original geschrieben von Fragender
Das würde dann ja bedeuten, dass man trotz höherer Auflösung nicht mehr Details bekommt. Welchen Sinn hätte dann noch eine höhere Auflösung, außer weniger Treppeneffekte zu bekommen, die man ja auch bei niedrigerer Auflösung mit AA ganz gut vertuschen kann? Irgendwie hast du da einen herben Denkfehler drin. Weisst du, was bei der Rasterung geschieht? Generell ist die Geometrie ja erst einmal unendlich hoch aufgelöst. Texturen haben eine feste Texelauflösung.

Bei der Rasterung des Bildes wird nun - wie der Name schon sagt - ein Raster über das Bild gelegt. Die Pixel dieses Bildes werden aus den berechneten Bildinformationen herausgemittelt. In dem Fall können z.B. für eine Texturfläche 4 gerasterte Pixel zuständig sein (hohe Rasterauflösung) oder eben nur einer (sehr niedrige Rasterauflösung). Weit entfernte Texturen und Geometriestrukturen werden dadurch mit wesentlich mehr Detailgrad dargestellt. Bei sehr kleiner Entfernung zu Texturen limitiert wiederum die Texelauflösung der Textur. Die Geometrie (bzw. die Polygonkanten) ist intern immer unendlich hoch aufgelöst.

Edit: Hö? Wieso bin ich jetzt auf einmal wieder eingeloggt?!?

Endorphine
2003-08-18, 00:52:51
Original geschrieben von Gast
Und wenn man eine größere Menge Pixel pro Fläche haben will, fragt man sich: Wo kommt die größere Menge her? Du erhöhst ja nur die Auflösung der Fläche. Ergo wird die Rasterabtastung einfach feiner, das ist auch schon alles. Höhere Auflösung heisst einfach nur höhere Abtastung des Bildes bzw. ein feineres Raster, was dann den höheren Detailgrad bringt. Original geschrieben von Gast
Da bieten sich mehr Polygone an oder aber die gleiche Anzahl von Polygonen und höher aufgelöste Texturen. Mehr Polygone sind immer sinnvoll, das ist ja von der Rasterauflösung erstmal unabhängig :)
Original geschrieben von Gast
Wenn man die Anzahl der Polygone und die Auflösung der Texturen gleich ließe - wo sollen dann mehr Pixel pro Fläche herkommen? In dem man die Rasterauflösung erhöht =)

Ich geb dir mal eine Modell vor, damit es für dich ersichtlicher wird. Stell dir mal vor, du hast die Mona Lisa von Leonardo da Vinci. Dieses Bild möchtest du jetzt digital darstellen. Da du nur Zahlen zur Verfügung hast überlegst du dir, das Bild einfach in Teile zu zerlegen, für die du Farbhelligkeitswerte bestimmst. Nehmen wir mal ganz extrem an, du hast nicht viel Lust zum rechnen und willst das Bild mit nur sechs Bildelementen (picture elements = PiXel) digitalisieren. Links oben ein Quadrat, rechts oben eins, zwei in der Mitte und zwei unten. Da die Brauntöne schön zur Geltung kommen sollen nimmst du für rot, grün und blau der 6 Pixel je 256 Hellligkeitsstufen. Nun überlegst du, wie hell wohl der rotwert für pixel Nr. 1 oben links ist, dann für blau usw. Das machst du für alle 6 Pixel.

Die fertigen Farbwerte kannst du dann am Rechner in ein 2x3 Pixel Bild eingeben. Das macht sechs mehr oder minder braune Klötze, du musstest ja das vorhandene Bild in 6 riesige Bereiche unterteilen und für diese 6 Bereiche passende Farbhelligkeits-Stellvertreter herausmitteln.

So, das ist jetzt eine niedrige Auflösung. Dabei geht massenhaft Detailgrad verloren, den Leonardo da Vinvi aber tatsächlich gezeichnet hat. Und auf einem heute üblichen Bildschirm in 1152x864 wäre dein 2x3 Pixel grosses Bild nur so gross wie ein Fliegendreck ;)

So. Im Vollbildmodus würde diese Fläche jetzt auf den Bildschirm aufgezogen und gefiltert, damit es nicht so fürchterlich blockig aussieht. Zum Beispiel bilinear. Das macht schöne sanfte Übergänge zwischen deinen 6 Pixeln, aber jeglicher Detailgrad fehlt. Auf den 6 mehr oder minder braunen Flecken kannst du keine Haare und keine Mundstrukturen erkennen. Erst recht keine Wimpern. Hier ist also bei der Rasterung Detailgrad verloren gegangen.

Jetzt überlegst du dir, doch etwas mehr Zeit aufzuwenden und die Mona Lisa doch etwas aufwendiger von Hand zu digitalisieren, damit du mehr Details in die digitalisierte Fassung herüberretten kannst. Du nimmst statt 6 nun sagen wir mal 100 Abtastpunkte, die gleichmässig über das Bild verteilt werden. Du schreibst wieder schön die Helligkeitswerte für rot, grün und blau auf, die du denkst, dass sie passen. Und - schwupps - auf einmal kannst du schon ein paar Konturen erkennen. Umrisse des Kopfes sind erkennbar etc. Das ist dann eine höhere Auflösung des gleichen Bildes.

Hmm, genauer gesagt habe ich jetzt zwar ne Texelauflösung erklärt, aber egal ;) Das Prinzip ist das gleiche, nur umgedreht, das Bild liegt unendlich hoch aufgelöst im Rechner und wird dann zur Monitorausgabe heruntergerastert.

Mit vielen Pixeln hat man ein sehr exaktes Abbild, es gehen nur wenig Informationen beim rastern verloren. Mit wenig Pixeln (= niedrige Auflösung) decken die Pixel viel mehr Bildfläche ab. Ergo wird eine viel grössere Bildfläche für ein Pixel gemittelt, Informationen gehen viel leichter verloren.

Ich hoffe, ich hab keinen Unsinn erzählt, ich denke aber, dass es so richtig ist *mutig bin* ;).

Fragender
2003-08-18, 01:01:16
Original geschrieben von Endorphine
Irgendwie hast du da einen herben Denkfehler drin. Weisst du, was bei der Rasterung geschieht? Generell ist die Geometrie ja erst einmal unendlich hoch aufgelöst. Texturen haben eine feste Texelauflösung.

Bei der Rasterung des Bildes wird nun - wie der Name schon sagt - ein Raster über das Bild gelegt. Die Pixel dieses Bildes werden aus den berechneten Bildinformationen herausgemittelt. In dem Fall können z.B. für eine Texturfläche 4 gerasterte Pixel zuständig sein (hohe Rasterauflösung) oder eben nur einer (sehr niedrige Rasterauflösung). Weit entfernte Texturen und Geometriestrukturen werden dadurch mit wesentlich mehr Detailgrad dargestellt. Bei sehr kleiner Entfernung zu Texturen limitiert wiederum die Texelauflösung der Textur. Die Geometrie (bzw. die Polygonkanten) ist intern immer unendlich hoch aufgelöst.

Edit: Hö? Wieso bin ich jetzt auf einmal wieder eingeloggt?!?


Was meinst Du mit "Geometrie ist unendlich hoch aufgelöst?" Meinst Du damit, dass die Eckpunkte der Polygone festliegen, aber die Koordinaten ihrer Kanten zunächst noch nicht und erst am Schluss gemäß der gewählten Auflösung berechnet werden?

Das kann aber doch auch nicht sein, denn wenn die Textur auf das Polygon gelegt wird, grast man das Polyon ja zeilenweise ab und liest aus der zugehörigen Textur die entsprechenden Pixel aus. Und bei diesem "Abgrasen" einer Zeile bewegt man sich ja von einem Punkt einer Kante des Polygons zu dem gegenüberliegenden Punkt der gegenüberliegenden Kante des Polygons . Also müssen die Koordinaten der Punkte der Kanten vorliegen - gemäß einer vorher festgelegten Auflösung.

Fragender
2003-08-18, 01:08:27
Original geschrieben von Endorphine
Das Prinzip ist das gleiche, nur umgedreht, das Bild liegt unendlich hoch aufgelöst im Rechner und wird dann zur Monitorausgabe heruntergerastert.



Dein Mona Lisa Beispiel in allen Ehren - eine schöne Erklärung für "Auflösung". Hier habe ich auch keine Verständnisprobleme, denn die Mona Lisa ist ja physikalisch vorhanden und kann natürlich verschieden fein abgetastet/digitalsiert werden, wodurch man Bilder verschiedener Detailgenauigkeiten erhält.

ABER: Wie soll das in einem Spiel funktionieren? Du sagst "Das Bild liegt unendlich hoch aufgelöst im Rechner" und wird dann wie die Mona Lisa gerastert. Äh, das kann doch nicht sein. Wie soll das Bild unendlich hoch aufgelöst im Rechner liegen??? Alle Berechnungen, die zur Fertigstellung eines Frames benötigt werden, müssen ja wohl in einer bestimmten Auflösung erfolgen.

Endorphine
2003-08-18, 01:21:59
Original geschrieben von Fragender
Was meinst Du mit "Geometrie ist unendlich hoch aufgelöst?" Meinst Du damit, dass die Eckpunkte der Polygone festliegen, aber die Koordinaten ihrer Kanten zunächst noch nicht und erst am Schluss gemäß der gewählten Auflösung berechnet werden? Ja :) Und das schöne an geometrischen Punkten ist ja auch, dass sie ebenfalls unendlich klein sind und für sich keine Fläche haben. Original geschrieben von Fragender
Das kann aber doch auch nicht sein, denn wenn die Textur auf das Polygon gelegt wird, grast man das Polyon ja zeilenweise ab und liest aus der zugehörigen Textur die entsprechenden Pixel aus. Und bei diesem "Abgrasen" einer Zeile bewegt man sich ja von einem Punkt einer Kante des Polygons zu dem gegenüberliegenden Punkt der gegenüberliegenden Kante des Polygons . Also müssen die Koordinaten der Punkte der Kanten vorliegen - gemäß einer vorher festgelegten Auflösung. Bei statischen Texturen ist es anders, die liegen ja bereits in gerasterter Form vor. Man brauch nur die Szene sehr nah an die Textur heranführen, dann limitiert die Texturauflösung und man hat mit nem guten Texturfilter bestenfalls fein abgestuften Matsch. Wenn die Texturen aber schön weit weg liegen gewinnt man mit einer feineren Rasterung unglaublich viel Bilddetail, was mit einer gröberen Rasterung einfach verschluckt wird. Und bei Texturen kann man noch schön mit LoD-Bias und AF Detailgrad rausholen. Oder die gesamte Szene gleiech mit Supersample AA behandeln =)

Was die Texturierung der Polygone aber im einzelnen hinsichtlich der Kantenauflösung abläuft - 3D-Gurus fragen ;) kA. Ich halte mich da mal besser zurück.

Ganon
2003-08-18, 01:28:02
Original geschrieben von Fragender
ABER: Wie soll das in einem Spiel funktionieren? Du sagst "Das Bild liegt unendlich hoch aufgelöst im Rechner" und wird dann wie die Mona Lisa gerastert. Äh, das kann doch nicht sein. Wie soll das Bild unendlich hoch aufgelöst im Rechner liegen??? Alle Berechnungen, die zur Fertigstellung eines Frames benötigt werden, müssen ja wohl in einer bestimmten Auflösung erfolgen.

Also! Du sagst dem Computer: "Eckpunkt da oben bei X=3 Y=4 Z=1, der nächste bei X=2 Y=3 Z=2,..."!
Dann sagst du: "Textur von < Da unten, bis da oben>"

Jetzt mal einfach ausgedrückt! Bis jetzt ist noch alles frei von Auflösung!

Endorphine
2003-08-18, 01:28:09
Original geschrieben von Fragender
Dein Mona Lisa Beispiel in allen Ehren - eine schöne Erklärung für "Auflösung". Hier habe ich auch keine Verständnisprobleme, denn die Mona Lisa ist ja physikalisch vorhanden und kann natürlich verschieden fein abgetastet/digitalsiert werden, wodurch man Bilder verschiedener Detailgenauigkeiten erhält. Im Rechner ist es dann ähnlich: du hast eine vorgegebene Szenerie, die intern (bis auf die Texturen, aber dafür gibt es ja Filter) "unendlich hoch" aufgelöst ist. Die wird dann gerastert. Den tatsächlich dargestellten Detailgrad bestimmst du durch die Rasterauflösung. Mit MSAA kannst du bei der Kantenauflösung tricksen und mit AF lässt sich die Texturauflösung auch in weiter entfernten Punkten oben halten. Original geschrieben von Fragender
ABER: Wie soll das in einem Spiel funktionieren? Du sagst "Das Bild liegt unendlich hoch aufgelöst im Rechner" und wird dann wie die Mona Lisa gerastert. Äh, das kann doch nicht sein. Wie soll das Bild unendlich hoch aufgelöst im Rechner liegen??? Alle Berechnungen, die zur Fertigstellung eines Frames benötigt werden, müssen ja wohl in einer bestimmten Auflösung erfolgen. Erst bei der Rasterung wird diese "bestimmte Auflösung" hergestellt. Vorher ist der Bilddetailgrad nur durch die Texturauflösung der statischen Texturen limitiert. Und absolut natürlich auch durch die Geometrieauflösung (damit meine ich jetzt die Auflösung eines beliebigen Objektes in n Dreiecken).

OK, ab dem Punkt ziehe ich mich mal zurück, die 3D-Gurus können da sicher mehr sagen. gn8

micki
2003-08-18, 01:54:56
in manchen fällen werden mehr polygone dargestellt, weil es manchmal welche gibt die bei 640*480 nur innerhalb eines pixels sind und deswegen rausgeworfen werden und bei 1600*1200 mit AA sind sie vielleicht großgenug für 3pixel.

es gibt LOD berechnungen, die abhängig von der auflösung das LOD selektieren, weil bei kleinen auflösungen ein polygonflimmern auftauchen kann, so als ob man kein MipMapping hätte.

MfG
micki

zeckensack
2003-08-18, 02:01:47
Original geschrieben von Fragender
Was meinst Du mit "Geometrie ist unendlich hoch aufgelöst?" Meinst Du damit, dass die Eckpunkte der Polygone festliegen, aber die Koordinaten ihrer Kanten zunächst noch nicht und erst am Schluss gemäß der gewählten Auflösung berechnet werden?Für die Geometrie benutzt man heutzutage 32Bit-Fließkommazahlen. Für das Pixelraster was letztendlich auf dem Schirm ist, reichen selbst bei extremsten Auflösungen 16 Bit Integer.
"Unendlich fein" ist also nur halbwahr, aber im Vergleich zum Pixelraster noch wahr genug ;)

Bei vernünftigen Grafik-APIs *hust* wird zudem mit Auflösungsunabhängigen Koordinaten gearbeitet.
(-1;-1) ist unten links, (1;1) oben rechts, ganz egal welche Auflösung anliegt. Das muß ein Spiel überhaupt nicht wissen :)

Wg Texturen, Texturfilter sorgen (unter anderem) dafür, daß nichts flimmert, indem sie auf ein Pixel nie mehr Information kleben, als anhand des Rasters darstellbar ist. Ist vergleichbar mit Audio-Bearbeitung und Frequenzspielräumen, so kann ich zB auf einer CD keine Schwingung >22,05kHz aufzeichnen. Ich kann es versuchen, dann kriege ich aber böse Artefakte.
Genauso kann ich keine Textur auf ein Pixelraster kleben, bei dem die 'Maximalfrequenz' (=kleinster Abstand zwischen verschiedenfarbigen Pixeln, oder so) das Pixelraster überfordert. Wenn ich eine 1024x1024er Textur in 640x480 komplett darstellen will, muß ich zwangsläufig ein paar Stellen weglassen/überspringen. Nicht gut.

=> Filter. Die effizienteste Methode, die Frequenz bei Bedarf via Filter herunterzuregeln, ist Mipmapping, wo vorgefilterte (verkleinerte) Stufen bereits fertig an den Grafikchip übergeben werden. Anstatt nun alles von der 'großen' Basistextur runterzurechnen, kann er sich nun dieser Mipmaps bedienen, und muß nur noch 'ein bisschen' weiterfiltern.

So, kommen wir so langsam mal zum Punkt :bäh:
Wenn ich die Auflösung erhöhe, kann der Filter nun gefahrlos mehr Details einbringen. Und tut dies auch, ganz automatisch. Diese Details müssen natürlich auch vorhanden sein, und zwar in Form von einer höher aufgelösten Mipmap-Stufe der Textur. Wo mehr passt, kommt auch mehr, da die Zielsetzung des Filters immer noch ist, den Spielraum den er hat maximal auszuschöpfen.

HTH :)

Fragender
2003-08-18, 04:22:57
Original geschrieben von zeckensack

1) Bei vernünftigen Grafik-APIs *hust* wird zudem mit Auflösungsunabhängigen Koordinaten gearbeitet.
(-1;-1) ist unten links, (1;1) oben rechts, ganz egal welche Auflösung anliegt. Das muß ein Spiel überhaupt nicht wissen :)

2) Wenn ich die Auflösung erhöhe, kann der Filter nun gefahrlos mehr Details einbringen. Und tut dies auch, ganz automatisch. Diese Details müssen natürlich auch vorhanden sein, und zwar in Form von einer höher aufgelösten Mipmap-Stufe der Textur. Wo mehr passt, kommt auch mehr, da die Zielsetzung des Filters immer noch ist, den Spielraum den er hat maximal auszuschöpfen.

HTH :)


Zu 2): Aha, also kann man doch grob sagen, dass man bei Erhöhung der Auflösung höher aufgelöste Texturen bekommt (indem halt höher aufgelöste Mip Map Stufen verwendet werden) und diese dann die höheren Details bringen. Die Details sind schließlich - nach den Treppeneffekten - der Grund, weshalb man eine hohe Auflösung haben will.

Zu 1): Naja, (-1,-1) unten links und (1,1) oben rechts ist ja gut und schön. Doch wenn ich ein Polygon mit einer Textur belege, lese ich ja die benötigten Texel aus der Textur aus und klatsche sie auf die Pixel des Polygons. Und dazu brauche ich ja nicht nur die Texel für die Eckpunkte des Polygons, sondern auch für alle Pixel innerhalb des Polygons (und auf seinen Kanten). Und nun muss ich doch wohl wissen, wie viele Pixel in dem Polygon drinliegen, um die entsprechenden Texel auszulesen. Bei kleinerer Auflösung muss ich dann weniger Texel auslesen als bei größerer. Wie soll das also auflösungsunabhängig gehen? Man kann doch nicht sagen, dass erst am Ende, wenn das Bild fertig ist, die Rasterung erfolgt. Denn was ist denn ein fertiges Bild anderes als ein Raster von Punkten?

Melle@work
2003-08-18, 09:34:07
Nehmen wir mal an , wir haben ein bildschirmfüllendes Quad, das komplett mit einer Textur belegt wurde, die z.B. (und wir nehmen das auch wirklich nur mal an, i.A. sollten Texturen ja quadratisch und zweierpotent ;D sein) 800x600 Pixel gross ist.

Fall 1) - Wiedergabeauflösung 640x480
In diesem Fall ist die Textur höher aufgelöst als die Auflösung, die das Wiedergabemedium darstellen kann. Die Textur enthält also mehr Informationen, als darstellbar sind - es erfolgt bei der Rasterisierung des auszugebenden Bilder also eine Herunterrechnung der Texturinformationen - pro dargestelltem Pixel wird der Mittelwert aus mehreren Texeln genommen (Downfiltering), und an die Stelle des Pixel in den Framebuffer geschrieben.

Fall 2) - Wiedergabeauflösung 800x600
Beide Auflösungen sind gleich, die Textur kann praktisch 1:1 am Bildschirm dargestellt werden. Pro Pixel sollte genau ein Texel in die Darstellung eingehen!

Fall 3) - Wiedergabeauflösung 1024x768
Die Auflösung der Textur ist geringer als die der Fläche, auf die die Textur projiziert werden soll. Das heisst, der Detailgrad der Textur reicht nicht aus, um die Fläche detailliert zu bedecken. Es sind also mehr Abtastpunkte vorhanden, als tatsächliche Texel. Ein Pixel wird nun also i.A. durch Interpolation der naheliegendsten Texelwerte bestimmt - der "Bilinear-Effekt" entsteht, die Textur wirkt etwas verwaschen.

An sich ist die Texturauflösung völlig unabhängig von der verwendeten Bildschirmauflösung. Nur die Art und Weise, wie die Pixelfarbe bestimmt wird, ändert sich - und da auch nur, wieviele Texel in ein fertiges Pixel wie verrechnet werden!

Gast
2003-08-18, 09:49:36
Original geschrieben von zeckensack
[...]32Bit-Fließkommazahlen.[...]
<:kicher:> "Gleitkomma"! </:kicher:> ;)
:weg:

Aquaschaf
2003-08-18, 10:12:23
Die Mipmaps sind von der Auflösung unabhängig.

Gast
2003-08-18, 11:28:49
Original geschrieben von Melle@work
Nehmen wir mal an , wir haben ein bildschirmfüllendes Quad, das komplett mit einer Textur belegt wurde, die z.B. (und wir nehmen das auch wirklich nur mal an, i.A. sollten Texturen ja quadratisch und zweierpotent ;D sein) 800x600 Pixel gross ist.

Fall 1) - Wiedergabeauflösung 640x480
In diesem Fall ist die Textur höher aufgelöst als die Auflösung, die das Wiedergabemedium darstellen kann. Die Textur enthält also mehr Informationen, als darstellbar sind - es erfolgt bei der Rasterisierung des auszugebenden Bilder also eine Herunterrechnung der Texturinformationen - pro dargestelltem Pixel wird der Mittelwert aus mehreren Texeln genommen (Downfiltering), und an die Stelle des Pixel in den Framebuffer geschrieben.

Fall 2) - Wiedergabeauflösung 800x600
Beide Auflösungen sind gleich, die Textur kann praktisch 1:1 am Bildschirm dargestellt werden. Pro Pixel sollte genau ein Texel in die Darstellung eingehen!

Fall 3) - Wiedergabeauflösung 1024x768
Die Auflösung der Textur ist geringer als die der Fläche, auf die die Textur projiziert werden soll. Das heisst, der Detailgrad der Textur reicht nicht aus, um die Fläche detailliert zu bedecken. Es sind also mehr Abtastpunkte vorhanden, als tatsächliche Texel. Ein Pixel wird nun also i.A. durch Interpolation der naheliegendsten Texelwerte bestimmt - der "Bilinear-Effekt" entsteht, die Textur wirkt etwas verwaschen.

An sich ist die Texturauflösung völlig unabhängig von der verwendeten Bildschirmauflösung. Nur die Art und Weise, wie die Pixelfarbe bestimmt wird, ändert sich - und da auch nur, wieviele Texel in ein fertiges Pixel wie verrechnet werden!


Natürlich behält die Textur ihre Auflösung. Wenn ich aber alle Details der Textur sehen will, geht das in Deinem Beispiel erst ab 800*600. Darunter gehen Details verloren.

Gast
2003-08-18, 11:33:55
Original geschrieben von Aquaschaf
Die Mipmaps sind von der Auflösung unabhängig.

Ja, aber wenn man eine höhere Auflösung wählt, wird halt zumindest für weiter entfernte Texturen eine höhere MipMap Sufe verwendet als dies bei kleinerer Auflösung der Fall war und die erkennbaren Details wachsen. Klar - steht man direkt vor der Textur, sieht das in niedriger und in hoher Auflösung gleich schlecht aus, weil dann bereits in der niedrigen Auflösung die Texturauflösung zu gering ist.

Major
2003-08-19, 16:14:50
Das heisst, ich kann z.B. auf einer Konsole, deren Ausgabegerät ein Fernseher ist, nie Texturen über 640x480 mit vollen Details darstellen?
Ich war mir da nämlich nie so sicher, darum frag ich hier nochmal nach :-)

OT:Dann werden Konsolen aber in absebarer Zei tein recht grosses Problem bekommen, da dann standardtexturen schön bei 1024x768 oder so liegen.

Aquaschaf
2003-08-19, 17:00:29
Nö ;)
Ausgenommen man klatscht die Textur auf ein ebenes, 4-eckiges Polygon ;)

betasilie
2003-08-19, 18:29:09
Original geschrieben von GloomY
Sicher? Was ist mit dem LOD Bias? Werden bei größeren Auflösungen nicht auch größere Texturen verwendet, sofern vorhanden?

Zeckensack sagte doch mal (ich hoffe mein Gedächnis lässt mich nicht im Stich), dass bei einer Konsole Texturen mit z.B. 2048x2048 gar keinen Sinn hätten, weil diese aufgrund der geringen Fernsehbildauflösung (ca. 512x512) immer kleinere Mipmaps verwendet würden. 4 Texel auf einem Pixel würde sicher zu großem Texturflimmern führen, Texturfilter hin oder her...
Das stimmt so nicht. Wenn Du ganz nahe an Flächen herangehst, merkst Du den Unterschied auch beim TV, weil Du ja einen Ausschnitt der Gesamttextur siehst.