PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GLSL/HLSL: mehrere Texturzugriffe in einem Schritt


ollix
2006-10-02, 13:35:47
Aktuell geht da meines Wissens nichts und ich weiß auch nicht ob das Sinn macht, aber ich bastele aktuell an einem Shader herum wo ich mehrere 3x3 Matrix mit Texturzugriffen fülle. Für jede Matrix und jedes Fragment sind das immer gleich 9 Texturzugriffe und ich habe mich einfach gefragt ob das evtl. beschleunig wird? Das ich einfach einen UV-Bereich und eine Matrix übergebe und bekomme die in einer Aktion von der Grafikkarte zurück - gefüllt mit mit Texturwerten.

Ist da bei zukünftigen APIs oder Hardware was geplant; oder ist das sinnlos und nicht so langsam, wie es sich anfühlt?

Gast
2006-10-02, 14:11:09
ATis Fetch 4 wäre da ne Möglichkeit. So kannst du wenigstens 4 Werte auf einmal reinladen.

Ob das unter OpenGL unterstützt wird weiß ich aber nicht.

Gast
2006-10-02, 14:11:46
Ach so und das kann natürlich nur R580 bzw RV560. Die Chips mit nur einer ALU pro Pipe (R520 z.B.) können das noch nich.

muhkuh_rs
2006-10-02, 14:24:32
Aktuell geht da meines Wissens nichts und ich weiß auch nicht ob das Sinn macht, aber ich bastele aktuell an einem Shader herum wo ich mehrere 3x3 Matrix mit Texturzugriffen fülle. Für jede Matrix und jedes Fragment sind das immer gleich 9 Texturzugriffe und ich habe mich einfach gefragt ob das evtl. beschleunig wird? Das ich einfach einen UV-Bereich und eine Matrix übergebe und bekomme die in einer Aktion von der Grafikkarte zurück - gefüllt mit mit Texturwerten.

Ist da bei zukünftigen APIs oder Hardware was geplant; oder ist das sinnlos und nicht so langsam, wie es sich anfühlt?

Ich bin mir nicht sicher ob ich das richtig verstanden habe. Im Fragment Program wird eine 3x3-Matrix aus einer Textur gelesen und dann damit weitergerechnet?Wenn das die 9 Werte sind von denen Du redest, kann dannn ließen sich doch auch 4 Channel Textures verwenden, so dass Du nur 3 fetches brauchst. Je nachdem was in der Matrix steht, sind vielleicht redundante Informationen dabei? Wenn es z.B. eine Rotationsmatrix ist, dann würden vielleicht auch 2 Basisvektoren reichen und der dritte per Kreuzprodukt gebildet. Da die Basisvektoren normiert sein müssen, würden 2 Componenten pro vektor genügen und sich das alles auch in einen Texture fetch unterbringen lassen. Ist nur fraglich, ab welcher Stelle die Rekonstruktion der Rotationsmatrix aufwendiger ist als mehr Fetches zu machen.

Gast
2006-10-02, 14:31:17
Stimmt ja. Denkfehler. Da brauchst nichmal Fetch 4 um an 4 Werte auf einmal zu kommen.