mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-10-09 22:01:36 +00:00
Implement proxied MSAA texture contents on OpenGL
This commit is contained in:
8 files changed
+435
-35
No files matched your search
@@ -35,23 +35,23 @@ layout(binding = 2) writeonly uniform uimage2DMSArray dstMS;
|
||||
layout(push_constant) uniform multisamplePush
|
||||
{
|
||||
int numMultiSamples;
|
||||
int currentSample;
|
||||
int currentSlice;
|
||||
int sampleOffset;
|
||||
int sliceOffset;
|
||||
uint currentStencil;
|
||||
} mscopy;
|
||||
|
||||
#define numMultiSamples (mscopy.numMultiSamples)
|
||||
#define currentSample (mscopy.currentSample)
|
||||
#define currentSlice (mscopy.currentSlice)
|
||||
#define sampleOffset (mscopy.sampleOffset)
|
||||
#define sliceOffset (mscopy.sliceOffset)
|
||||
#define currentStencil (mscopy.currentStencil)
|
||||
|
||||
#else
|
||||
|
||||
uniform uvec4 mscopy;
|
||||
uniform ivec4 mscopy;
|
||||
|
||||
#define numMultiSamples (int(mscopy.x))
|
||||
#define currentSample (mscopy.y)
|
||||
#define currentSlice (mscopy.z)
|
||||
#define numMultiSamples (mscopy.x)
|
||||
#define sampleOffset (mscopy.y)
|
||||
#define sliceOffset (mscopy.z)
|
||||
#define currentStencil (mscopy.w)
|
||||
|
||||
#endif
|
||||
@@ -60,10 +60,10 @@ void main()
|
||||
{
|
||||
uvec3 id = gl_GlobalInvocationID;
|
||||
|
||||
int slice = int(id.z / numMultiSamples);
|
||||
int sampleIdx = int(id.z % numMultiSamples);
|
||||
int slice = sliceOffset + int(id.z / numMultiSamples);
|
||||
int sampleIdx = sampleOffset + int(id.z % numMultiSamples);
|
||||
|
||||
uvec4 data = texelFetch(srcArray, ivec3(int(id.x), int(id.y), int(id.z)), 0);
|
||||
uvec4 data = texelFetch(srcArray, ivec3(int(id.x), int(id.y), slice * numMultiSamples + sampleIdx), 0);
|
||||
|
||||
imageStore(dstMS, ivec3(int(id.x), int(id.y), slice), sampleIdx, data);
|
||||
}
|
||||
@@ -22,6 +22,8 @@
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
//#extension_nongles GL_ARB_sample_shading : require
|
||||
|
||||
layout(binding = 0) uniform sampler2DArray srcDepthArray;
|
||||
layout(binding = 1) uniform usampler2DArray srcStencilArray;
|
||||
// binding = 2 used as an image in the colour copy compute shaders
|
||||
@@ -43,12 +45,12 @@ layout(push_constant) uniform multisamplePush
|
||||
|
||||
#else
|
||||
|
||||
uniform uvec4 mscopy;
|
||||
uniform ivec4 mscopy;
|
||||
|
||||
#define numMultiSamples (int(mscopy.x))
|
||||
#define numMultiSamples (mscopy.x)
|
||||
#define currentSample (mscopy.y)
|
||||
#define currentSlice (mscopy.z)
|
||||
#define currentStencil (mscopy.w)
|
||||
#define currentStencil (uint(mscopy.w))
|
||||
|
||||
#endif
|
||||
|
||||
@@ -56,7 +58,7 @@ void main()
|
||||
{
|
||||
ivec3 srcCoord = ivec3(int(gl_FragCoord.x), int(gl_FragCoord.y), currentSlice*numMultiSamples + gl_SampleID);
|
||||
|
||||
if(currentStencil < 256)
|
||||
if(currentStencil < 256u)
|
||||
{
|
||||
uint stencil = texelFetch(srcStencilArray, srcCoord, 0).x;
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
//#extension_nongles GL_ARB_sample_shading : require
|
||||
|
||||
layout(binding = 0) uniform sampler2DMSArray srcDepthMS;
|
||||
layout(binding = 1) uniform usampler2DMSArray srcStencilMS;
|
||||
@@ -43,12 +45,12 @@ layout(push_constant) uniform multisamplePush
|
||||
|
||||
#else
|
||||
|
||||
uniform uvec4 mscopy;
|
||||
uniform ivec4 mscopy;
|
||||
|
||||
#define numMultiSamples (int(mscopy.x))
|
||||
#define numMultiSamples (mscopy.x)
|
||||
#define currentSample (mscopy.y)
|
||||
#define currentSlice (mscopy.z)
|
||||
#define currentStencil (mscopy.w)
|
||||
#define currentStencil (uint(mscopy.w))
|
||||
|
||||
#endif
|
||||
|
||||
@@ -56,7 +58,7 @@ void main()
|
||||
{
|
||||
ivec3 srcCoord = ivec3(int(gl_FragCoord.x), int(gl_FragCoord.y), currentSlice);
|
||||
|
||||
if(currentStencil < 256)
|
||||
if(currentStencil < 256u)
|
||||
{
|
||||
uint stencil = texelFetch(srcStencilMS, srcCoord, currentSample).x;
|
||||
|
||||
|
||||
@@ -48,9 +48,9 @@ layout(push_constant) uniform multisamplePush
|
||||
|
||||
#else
|
||||
|
||||
uniform uvec4 mscopy;
|
||||
uniform ivec4 mscopy;
|
||||
|
||||
#define numMultiSamples (int(mscopy.x))
|
||||
#define numMultiSamples (mscopy.x)
|
||||
#define currentSample (mscopy.y)
|
||||
#define currentSlice (mscopy.z)
|
||||
#define currentStencil (mscopy.w)
|
||||
|
||||
Reference in new issue
Block a user