PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Pre-blending textures": Hat ATI das jemals genutzt?


Demirug
2003-12-28, 21:51:05
Beim rumschnüffeln ist mir folgendes unter den Riecher gekommen:

ATI: Pre-blending textures (http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=/netahtml/srchnum.htm&r=1&f=G&l=50&s1=6,667,746.WKU.&OS=PN/6,667,746&RS=PN/6,667,746)

Vereinfach gesagt geht es dabei um die Idee Texture-Blending (z.B. Basistextur+Detailtextur) Operationen vorzurechnen. Bei eigentlichen Rendern wird dann nur noch eine Textur ausgelesen und nicht mehr das ganze Blendig durchgeführt. Dieses Vorberechnen sollte dabei ursprünglich die CPU übernehmen. Dank "Render to Texture" könnte man das aber auch direkt die Grafikkarte machen lassen. Braucht man das gleiche Pixelblendig öfter, dabei spielt es keine grosse Rolle ob im gleichen Frame oder in mehreren aufeinader folgenden, führt das zu einer ehrheblichen Einsparung von Fillrate. Das ganze kostet natürlich etwas Speicher.

Gibt es nun irgendwelche Anhaltspunkte das ATI (oder auch ein anderer IHV) von dieser Technik gebrauch gemacht hat um auf bessere Frameraten zu kommen?

Xmas@home
2003-12-28, 22:14:23
Bei mehr als einer reinen Addition/Subtraktion bekommt man dann aber schon Probleme beim Filtern, zumindest bei Vergrößerung.

Insgesamt sehe ich nur (noch) wenig Gelegenheiten, ein solches Verfahren effizient zu verwenden, und dort wo es möglich ist, sollte es eigentlich eher gleich von der Software gemacht werden.

Demirug
2003-12-28, 22:22:20
Multiplizieren ginge wohl auch noch ganz gut (Texture*Lightmap).

Alle mögliche Kombinationen im Vorfeld auszurechnen sehe ich als ein wenig kompliziert an da man damit den Texturespeicher wohl entgültig überlädt. Wenn aber der Treiber schlau genug wäre zu erkennen welche Kombinationen gerade aktuell verwendet werden könnte er das durchaus ausnutzen.

Xmas@home
2003-12-28, 22:48:49
Original geschrieben von Demirug
Multiplizieren ginge wohl auch noch ganz gut (Texture*Lightmap).
Ja bei Lightmaps mag das noch ganz gut funktionieren, aber wenn damit irgendeine andere Rechnung nachgestellt werden soll, könnte es Probleme wegen des Filterns geben. Allerdings sind Lightmaps oftmals Einzeltexturen über wiederholende Texturen, und um das Vorzuberechnen braucht man wieder viel zu viel Platz.

Alle mögliche Kombinationen im Vorfeld auszurechnen sehe ich als ein wenig kompliziert an da man damit den Texturespeicher wohl entgültig überlädt. Wenn aber der Treiber schlau genug wäre zu erkennen welche Kombinationen gerade aktuell verwendet werden könnte er das durchaus ausnutzen.
Ich sehe da das Problem, dass man dies eventuell für nur kurz auftauchende, weit entfernte Texturen macht und dafür viel zu viel Zeit und Platz verschwendet. Zudem habe ich lieber eine konstante Framerate, statt hohe Maximalwerte aber dann Einbrüche, wenn mal wieder neue Blends berechnet werden müssen.

Und letztlich funktioniert es auch nur, wenn man mehrere gleich ausgerichtete Texturlagen hat. Bei Detail Textures ist das eher selten der Fall.