Archiv verlassen und diese Seite im Standarddesign anzeigen : ATI zum F-Buffer
Demirug
2003-10-09, 23:16:52
Ich weiss das wir das Thema vor kurzem in einem Thread hatten und ich wollte schon damals das folgenden Posten. Irgendwie habe ich es aber vergessen und jetzt finden ich den Thread nicht mehr. Darum ein neuer.
Zum F-Buffer gibt es zwei Aussagen von ATI Mitarbeiter die wohl entgültig klar machen um was es sich dabei wirklich handelt.
The F-buffer works like this...
You create a shader which uses 'many' instructions, we detect that the shader cannot be executed in a single pass because it won't fit into the hardware and we decompose that shader into multiple blocks, each of which does fit into a single pass.
We store intermediate values in a float buffer, and we bind the passes together so that, as a programmer, you don't see the separate blocks being executed.
Richard "7 of 5" Huddy
European Developer Relations Manager, ATI
F-buffer is really there for GL2 implementation only. It won't be available in D3D or as an OpenGL extension (as far as I know). There're certain limitations that make it undesirable to expose under D3D. Besides, driver would still have to switch between different shaders because in the hardware you can fit only 96 instructions. In most cases (i.e. when not using alpha
blending) you can implement multi-pass techniques with minimal overhead.
Guennadi
Quasar
2003-10-09, 23:23:07
Also doch Software?
Demirug
2003-10-09, 23:30:38
Original geschrieben von Quasar
Also doch Software?
Wenn in die Hardware nur 96 Ops passen und Guennadi sagt das der Treiber zwischen den einzelen Shadern umschalten muss sieht es schwer danach aus.
Quasar
2003-10-09, 23:33:29
Gehe ich recht in der Annahme, daß man den Geschwindigkeitsunterschied zwischen dieser "hardware-assisted" (immerhin ein Float-Buffer) und einer "reinen" Hardware-Lösung bei Shadern im, sagen wir mal pauschal, dreistelligen Instrukionsbereich eh kaum spüren würde?
Demirug
2003-10-09, 23:39:36
Solange genügend Bandbreite und Speicher verfügbar ist sollte das nicht zu sehr ins Gewicht Fallen. Problematisch könnte es nur werden wenn der Shader in zu viele Passes zerlegt werden muss.
Quasar
2003-10-09, 23:46:45
Speicher? Wie groß könnte so ein Float-Buffer, bzw. der zugehörige Shader denn im Ernstfall werden? Das Ganze sollte doch, IIRC, auf Pixelebene abgewickelt werden.
deekey777
2003-10-09, 23:51:09
"Der F-Buffer hebt die Begrenzung der Pixel-Shader Instruktionen die pro Pixel bearbeitet werden können auf. ATIs Radeon 9800 kann theoretisch unendlich viele Instruktionen ausführen. Der F-Buffer ist aber über den Grafikkartenspeicher begrenzt."
Ich selbst habe keine Ahnung, was da oben steht. Aber es könnte hier reinpassen
Original geschrieben von Demirug
Wenn in die Hardware nur 96 Ops passen und Guennadi sagt das der Treiber zwischen den einzelen Shadern umschalten muss sieht es schwer danach aus.
Naja, das eigentlich "hardwaremäßig notwendige" ist ja nicht die Shaderumschaltung, sondern die Verwaltung des F-Buffers. Und wenn dieser als in der Größe begrenzter FIFO-Puffer ausgelegt ist, muss ja auch das Triangle Setup entsprechend modifiziert sein, immer nur eine bestimmte Anzahl an Pixeln in einem Rutsch zu generieren.
Ailuros
2003-10-10, 03:50:05
Mal ganz brutal OT: was ist eigentlich mit gewissen *hustfragenhust* passiert?
Das Thema gehoert ja eigentlich dazu....
Demirug
2003-10-10, 07:41:01
Original geschrieben von Xmas
Naja, das eigentlich "hardwaremäßig notwendige" ist ja nicht die Shaderumschaltung, sondern die Verwaltung des F-Buffers. Und wenn dieser als in der Größe begrenzter FIFO-Puffer ausgelegt ist, muss ja auch das Triangle Setup entsprechend modifiziert sein, immer nur eine bestimmte Anzahl an Pixeln in einem Rutsch zu generieren.
nehmen wir mal an das es sich wirklich um einen regularen F-Buffer handelt und keine Treiberspielerein. Das Guennadi
alpha Blendig erwähnt hat macht mich da schon stutzig. In diesem Fall müsste also das Trisetup so viele Pixel erzeugen wie in den F-Buffer passen und dann den Treiber informieren damit dieser den nächsten Shader lädt. So ein PingPong Spiel erscheint mir nicht gerade sehr effektiv.
Demirug
2003-10-10, 07:41:38
Original geschrieben von Ailuros
Mal ganz brutal OT: was ist eigentlich mit gewissen *hustfragenhust* passiert?
Das Thema gehoert ja eigentlich dazu....
Ähm, hilf mir mal auf die sprünge.
micki
2003-10-10, 09:28:58
soweit ich weiß, kann man maximal 4 Renderbuffer (btw:4layer 128bit renderbuffer in 1600*1200,117MB)gleichzeitig haben, es gibt aber sehr viel mehr temp variablen, somit könnte es im worstcase passieren dass man nur 2 befehle ausführt (mad temp2,temp1,temp3,temp4; mov temp7, temp8) und man würde alle temps aus einem render-buffer ausnutzen.
oder ist das das neue an der 9800 gegenüber der 9700, dass sie mehr gleichzeitige rendertargets hat? weil der ganze vorgang an sich eh in software gesteuert wird und auf jeder dx9 hardware laufen müßte.
gruesse
micki
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.