From 8f163be2dd2844c51d9e351c1fb9abf26efc8b98 Mon Sep 17 00:00:00 2001 From: Sofie Brouwer Date: Fri, 8 Mar 2019 14:49:47 +0100 Subject: [PATCH] Fix textures not getting displayed when using GL_COMPARE_REF_TO_TEXTURE This commit adds the GL_TEXTURE_COMPARE_MODE parameter to the TextureSamplerState struct, and sets its value to GL_NONE in SetSamplerState. This fixes the issue of depth textures that use GL_COMPARE_REF_TO_TEXTURE being displayed as solid black or white in the texture viewer. --- renderdoc/driver/gl/gl_debug.cpp | 6 ++++++ renderdoc/driver/gl/gl_replay.h | 1 + 2 files changed, 7 insertions(+) diff --git a/renderdoc/driver/gl/gl_debug.cpp b/renderdoc/driver/gl/gl_debug.cpp index 38bc102f0..b839fe4c2 100644 --- a/renderdoc/driver/gl/gl_debug.cpp +++ b/renderdoc/driver/gl/gl_debug.cpp @@ -1168,6 +1168,11 @@ GLReplay::TextureSamplerState GLReplay::SetSamplerParams(GLenum target, GLuint t GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_MAG_FILTER, (GLint *)&ret.magFilter); GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)&ret.wrapS); GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&ret.wrapT); + GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&ret.compareMode); + + // disable depth comparison + GLenum compareMode = eGL_NONE; + GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&compareMode); // always want to clamp GLenum param = eGL_CLAMP_TO_EDGE; @@ -1210,6 +1215,7 @@ void GLReplay::RestoreSamplerParams(GLenum target, GLuint texname, TextureSample GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&state.wrapT); GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_MIN_FILTER, (GLint *)&state.minFilter); GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_MAG_FILTER, (GLint *)&state.magFilter); + GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&state.compareMode); } bool GLReplay::GetMinMax(ResourceId texid, uint32_t sliceFace, uint32_t mip, uint32_t sample, diff --git a/renderdoc/driver/gl/gl_replay.h b/renderdoc/driver/gl/gl_replay.h index 49d1b626b..914531099 100644 --- a/renderdoc/driver/gl/gl_replay.h +++ b/renderdoc/driver/gl/gl_replay.h @@ -295,6 +295,7 @@ private: GLenum magFilter = eGL_NEAREST; GLenum wrapS = eGL_CLAMP_TO_EDGE; GLenum wrapT = eGL_CLAMP_TO_EDGE; + GLenum compareMode = eGL_NONE; }; // sets the desired parameters, and returns the previous ones ready to restore