Grafikkarte: Warum Zweierpotenz?

Busti

Mitglied
Hallo,

ich habe mal eine allgemeine Frage.
Warum ist es so, das man Texturen mit Zweierpotenzen in 3D-Objekten verwenden sollte?

Viele Grüße

Busti
 
in wieweit 2er Potenzen?

Ein Rechner hat immer nur 2 Zustaende ... einen low und einen highwert ... also eine Basis 2 ... ;) logischerweise baut auch das Zahlensystem auf der Basis 2 auf.

Binaersysteme kann man auch darstellen in dem man die letzte Stelle mit 2^0 darstellt, die 2. mit 2^1, die 3. mit 2^2 etc ... folglich beschraenkt sich die Rechnerei in einem PC allgemein, und natuerlicherweise auch in 3D Texturen auf jene Binaerzahlen, welche sich auf 2er Potenzen aufbauen ... :)

Frage geklaert?
 
Ich führe mal weiter aus:
Prozessoren, ob Grafik oder CPU, haben Befehle, die am Schnellsten laufen, wenn die Berechnung auf Binärbasis läuft, weil letztlich ALLE Befehle etwas mit binären logischen Operationen zu tun haben. Beispielsweise ist ein Prozessor sehr viel schneller, wenn die Aufgabe lautet 512/2 anstatt 333/3.

512 ist Binär ausgedrückt 1000000000.
334 sieht binar so aus : 101001110.

Bei der ersten Rechnung muss die 1 nur um eine Stelle nach Rechts verschoben werden, das ist sehr viel schneller, als ( Beispiel 2 ) - OJE, hier hört mein Verständnis für simple Operationen auf, Tschuldige..

Aber im Grundsatz liegt da die Erklärung für Zahlen und Operationen die einfach zu bewerkstelligen sind - und damit schnell.

mfg chmee
 
Also kann ich zusammenfassen sagen, wenn ich meine Texturen optimiere (auf Zweierpotenzen skaliere) kann die Grafikkarte die Szene schneller laden und ich habe einen flüssigeren Übergang wenn ich mich in der Szene bewege?!
 
Ja, so kann man es sagen. In manchen Fällen beschränkt die Grafikengine die Textur auf NUR Binärvielfache.. Spätestens beim Mipmapping, wo mehrere Texturen verschiedener Größe (nämlich immer die Hälfte) in einer stecken, wird es logisch, dass ein Prozessor so wenig wie möglich damit zu tun haben soll.

mfg chmee
 
Ich führe mal weiter aus:
Prozessoren, ob Grafik oder CPU, haben Befehle, die am Schnellsten laufen, wenn die Berechnung auf Binärbasis läuft, weil letztlich ALLE Befehle etwas mit binären logischen Operationen zu tun haben. Beispielsweise ist ein Prozessor sehr viel schneller, wenn die Aufgabe lautet 512/2 anstatt 333/3.

512 ist Binär ausgedrückt 1000000000.
334 sieht binar so aus : 101001110.

Bei der ersten Rechnung muss die 1 nur um eine Stelle nach Rechts verschoben werden, das ist sehr viel schneller, als ( Beispiel 2 ) - OJE, hier hört mein Verständnis für simple Operationen auf, Tschuldige..

Aber im Grundsatz liegt da die Erklärung für Zahlen und Operationen die einfach zu bewerkstelligen sind - und damit schnell.

mfg chmee

Im Prinzip hast du recht. Entscheidend ist in dem Rechenbeispiel jedoch nicht 512 oder 333, sondern der Teiler 2.

Wenn der Teiler 2 lautet kann man die Division durch einen Shift ersetzen. Es wird logisch betrachtet nicht nur die 1 um eine Stelle nach rechts verschoben sondern auch alle Nullen und die Zahl an erster Stelle mit einer 0 aufgefüllt (gibt auch befehle, damit mit einer 1 gefüllt wird). Darum ist es egal ob ich 512 oder 333 durch 2 Teile, der Aufwand ist immer der selbe.

Zu den Texturen hab ich nur eine Ahnung, kann es aber nicht 100% sagen. Aber es scheint wohl seine Berechtigung zu haben, selbst beim Rendern in Blender werden Texturen zur Basis 2 empfohlen. Divisionen sind meist sehr rechenaufwendig, wenn man diese durch Shift-Operationen ersetzen kann, gewinnt man deutlich an Performanz.
 
Zurück