Sample-Tiefenpuffer im OpenGL-Compute-Shader

8

Ich versuche, eine Tiefenstruktur in einen Compute-Shader aufzunehmen und in eine andere Textur zu kopieren.

Das Problem ist, dass ich keine korrekten Werte bekomme, wenn ich von der Tiefenstruktur lese:

Ich habe versucht zu überprüfen, ob die Anfangswerte der Tiefenstruktur korrekt waren (mit GDebugger), und sie sind. Es ist also die imageLoad GLSL-Funktion, die falsche Werte abruft.

das ist mein GLSL Compute Shader:

%Vor%

und so erstelle ich die Tiefenstruktur und die Farbtextur:

%Vor%

Ich fülle die Tiefenstruktur mit Tiefenwerten (binde sie an einen Bildpuffer und rende die Szene) und rufe dann meinen Compute Shader auf:

%Vor%

mit:

  1. wDimensions = Größe des Kontexts (und des Framebuffers)
  2. WORK_GROUP_SIZE = 16

Haben Sie eine Ahnung, warum ich keine gültigen Tiefenwerte bekomme?

BEARBEITEN:

So sieht die Farbtextur beim Rendern einer Kugel aus:

IMG http://i41.tinypic.com/2rqll4l.png

und es scheint, dass glClear (GL_DEPTH_BUFFER_BIT) nichts tut: Auch wenn ich es juste vor dem glDispatchCompute () anrufe habe ich immer noch das selbe Bild ... Wie kann das möglich sein?

    
Paul 27.01.2014, 15:37
quelle

1 Antwort

7

Tatsächlich habe ich festgestellt, dass Sie eine Tiefenstruktur nicht als Bild an einen Compute Shader senden können, auch nicht mit dem Schlüsselwort readonly.

Also habe ich ersetzt:

%Vor%

von:

%Vor%

und in meinem Compute-Shader:

%Vor%

von:

%Vor%

und um es zu probieren schreibe ich einfach:

%Vor%

und es funktioniert sehr gut so

    
Paul 13.02.2014, 11:19
quelle

Tags und Links