PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Premultiplied by Alpha" – und weitere Fragen zu Texturen


aths
2005-03-24, 17:57:04
Was bringt es, bei DXT-Texturen die Farben mit dem Alpha-Kanal vorzumultiplizieren? (DXT2 und DXT4.)

Was zum Geier ist NCC (Narrow Channel Compression)?

Gibt es auch YUV-Texturformate (oder halt YIC), z. B. YUV 8:4:4?

Gibt es YUYV-Subsampling-Texturen? (Also pro 2 Texeln nur 1 U und 1 V, aber 2 Y)

Demirug
2005-03-24, 18:27:52
Hast du Langeweile und liest deswegen die DX Dokumentation?

Das Premultiplied war als Information für den Chip/Treiber gedacht das man beim Alphablending eine Multiplikation sparen kann/muss.

Normalerweise müsste man ja rechen

Neue Framebufferfarbe = (Texturfarbe * Alpha) + (Framebuffer * (100% - Alpha))

Mit einer Premultiplied Texture reicht eine vereinfachte Rechnug.

Neue Framebufferfarbe = Texturefarbe + (Framebuffer * (100% - Alpha)).

Heute erledigt man das im Pixelshader womit der Bedarf für ein eigenes Format nicht mehr gegeben ist. Premultiplied macht aber dennoch immer noch Sinn weil man damit eine Multiplikation einsparen kann.

aths
2005-03-24, 18:31:33
Hast du Langeweile und liest deswegen die DX Dokumentation?Langeweile? Nein, ich suche Unterthemen für das Diplomarbeitsthema auf, mit das ich dann an den Professor herantreten werde, und lese deshalb das DX8.1-SDK zum Thema DXT, da sich im Netz nichts vernünftiges dazu finden lies. War schon ein Krampf, das FXT1-Paper zu finden.

Daher auch meine weiteren Fragen im Posting oben – nicht, dass ich in der Arbeit was als Neuheit verkaufe, was es schon gibt.

Das Premultiplied war als Information für den Chip/Treiber gedacht das man beim Alphablending eine Multiplikation sparen kann/muss.

Normalerweise müsste man ja rechen

Neue Framebufferfarbe = (Texturfarbe * Alpha) + (Framebuffer * (100% - Alpha))

Mit einer Premultiplied Texture reicht eine vereinfachte Rechnug.

Neue Framebufferfarbe = Texturefarbe + (Framebuffer * (100% - Alpha)).

Heute erledigt man das im Pixelshader womit der Bedarf für ein eigenes Format nicht mehr gegeben ist. Premultiplied macht aber dennoch immer noch Sinn weil man damit eine Multiplikation einsparen kann.Muss RGB*A im Combiner gemacht werden? Ich dachte immer, das macht schon der Blender.

Demirug
2005-03-24, 18:52:16
Muss RGB*A im Combiner gemacht werden? Ich dachte immer, das macht schon der Blender.

Beim Multipass machen das schon die ROPs. Das Premultiplied war für ROPs gedacht welche nur 1 Mul pro Takt können. Ich habe keine Ahnung ob das jemals wirklich benutzt wurde.

Bei Multitexture muss man das Blenden entsprechenden in den Combiner/ bzw im Shader machen und dort kann man dann eben mit Premultiplied Texturen ein MUL sparen. Dabei ist aber das Format egal.



Narrow Channel Compression ist ein Verfahren von 3dfx bei dem man eine Texture so komprimiert das jeder Pixel durch ein 8 Bit Index auf eine Palette ersetzt wird. Diese Palette wird in einem speziellen Format gespeichert so das sie kleiner als eine normale RGBA Palette ist.

Es gibt Textureformate für YUV. IIRC kann aber kein Chip ein solches Format direkt als Texture nutzen. Allerdings unterstützen einige Chips diese Formate als Surface mit der Möglichkeit von dort in eine RGB Texture umzukopieren.

Es gibt auch Formate bei denen 2 Texel zusammen koddiert sind sowohl für YUV wie auch für RGBA.

Technisch gesehen kann ein Chip jedes Format unterstützen das er möchte. Dafür gibt es ja die FourCC Codes.

aths
2005-03-24, 19:07:38
Beim Multipass machen das schon die ROPs. Das Premultiplied war für ROPs gedacht welche nur 1 Mul pro Takt können. Ich habe keine Ahnung ob das jemals wirklich benutzt wurde.

Bei Multitexture muss man das Blenden entsprechenden in den Combiner/ bzw im Shader machen und dort kann man dann eben mit Premultiplied Texturen ein MUL sparen. Dabei ist aber das Format egal.Hrm. Ok, für meine Zwecke kann ich DXT2 und 4 praktisch außer acht lassen.


Narrow Channel Compression ist ein Verfahren von 3dfx bei dem man eine Texture so komprimiert das jeder Pixel durch ein 8 Bit Index auf eine Palette ersetzt wird. Diese Palette wird in einem speziellen Format gespeichert so das sie kleiner als eine normale RGBA Palette ist.Wo kann man nachlesen, wie diese Palette genau gespeichert wird?

Es gibt Textureformate für YUV. IIRC kann aber kein Chip ein solches Format direkt als Texture nutzen. Allerdings unterstützen einige Chips diese Formate als Surface mit der Möglichkeit von dort in eine RGB Texture umzukopieren.

Es gibt auch Formate bei denen 2 Texel zusammen koddiert sind sowohl für YUV wie auch für RGBA.

Technisch gesehen kann ein Chip jedes Format unterstützen das er möchte. Dafür gibt es ja die FourCC Codes.Jopp. Ich werd wohl mal eine Test-App schreiben müssen um zu sehen, um zu sehen, ob der Qualitätsverlust akzeptabel ist oder nicht.

Xmas
2005-03-24, 20:40:46
Hrm. Ok, für meine Zwecke kann ich DXT2 und 4 praktisch außer acht lassen.
Um mal die Relevanz von DXT2/4 zu belegen, die OpenGL-S3TC-Extension bietet diese Formate erst gar nicht an...

aths
2005-03-25, 17:08:41
Bei PowerVR hab ich noch n nettes Paper von einem Simon Fenney gefunden, welches die TC-Problematik angeht.

Gast
2005-03-27, 17:28:31
Gibt es auch YUV-Texturformate (oder halt YIC), z. B. YUV 8:4:4?

Gibt es YUYV-Subsampling-Texturen? (Also pro 2 Texeln nur 1 U und 1 V, aber 2 Y)
Klar gibt es die! Das YUV-Format und deren zahlreichen Varianten ist schliesslich das Ausgangsformat von Video-Daten (DVD, AVI usw.) Wenn ein Chip die Gängigen nicht unterstützen würde, wäre es um die Video-Beschleunigung schlecht bestellt.