PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FX12, FX16...


aths
2003-11-09, 20:41:03
Ich hab wieder mal einige Fragen.

- Die "8-Bit-Integer-Farben" nutzen ja Integer-Werte von 0..255, wobei 255 = Weiß entspricht. Man kann also nicht unbedingt noch "Nachkomma"-Werten sprechen, da binär 0,11111111 nur 0,99609375 und nicht 1,0 ist.

Wie ist das bei FX12? Entspricht Weiß dort 01 0000 0000 00
oder 00 1111 1111 11?

Wie ist FX16 aufgebaut? (Wieviel "overbright"-Bits hat FX16?)

Wenn Texturen mit 8-8-8-8 mit FX12 verrechnet werden, werden die Bits einfach << 2 geschoben, oder wird da korrekt umgerechnet?

zeckensack
2003-11-09, 21:15:35
Original geschrieben von aths
Ich hab wieder mal einige Fragen.

- Die "8-Bit-Integer-Farben" nutzen ja Integer-Werte von 0..255, wobei 255 = Weiß entspricht. Man kann also nicht unbedingt noch "Nachkomma"-Werten sprechen, da binär 0,11111111 nur 0,99609375 und nicht 1,0 ist.Integer "mal" 1/255 ist die 'amtliche' Umrechnungsformel.
Wie ist das bei FX12? Entspricht Weiß dort 01 0000 0000 00
oder 00 1111 1111 11?

Wie ist FX16 aufgebaut? (Wieviel "overbright"-Bits hat FX16?)Keine Ahnung. Fällt wohl unter Geschäftsgeheimnis :)
Wenn Texturen mit 8-8-8-8 mit FX12 verrechnet werden, werden die Bits einfach << 2 geschoben, oder wird da korrekt umgerechnet? Die wiederum 'amtliche' Technik ist das Replizieren der MSBs in die leeren LSBs.

ZB von 5 Bit nach 8 Bit
10111 => 10111101
Wenn mehr Bits 'fehlen' als man MSBs hat, dann wird das ganze nochmal wiederholt.
ZB von 3 Bit nach 8 Bit
101 => 10110110

edit: Das macht man, um das ganze reversibel zu halten. Runterrechnen erfolgt durch Abschneiden der Bits (keine Rundung). So wird sichergestellt, daß bei die Konversion 3 Bit => 8 Bit => 3 Bit wieder den ursprünglichen Wert ergibt.

Xmas
2003-11-09, 21:50:14
FX12 ist 12bit signed Integer / 1024. Also insgesamt ein Wertebereich von [-2048/1024, 2047/1024]. Die Umrechnung von 8bit Texturwerten müsste aus Multiplikationsgründen genau sein, also 1111 1111 als Texturwert müsste in 0100 0000 0000 umgerechnet werden.