diff --git a/renderdoc/driver/gl/gl_debug.cpp b/renderdoc/driver/gl/gl_debug.cpp index f933620f0..0b4dba238 100644 --- a/renderdoc/driver/gl/gl_debug.cpp +++ b/renderdoc/driver/gl/gl_debug.cpp @@ -1345,11 +1345,18 @@ GLReplay::TextureSamplerState GLReplay::SetSamplerParams(GLenum target, GLuint t GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&ret.wrapT); GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_R, (GLint *)&ret.wrapR); GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&ret.compareMode); + if(!IsGLES) + GL.glGetTextureParameterfvEXT(texname, target, eGL_TEXTURE_LOD_BIAS, &ret.lodBias); // disable depth comparison GLenum compareMode = eGL_NONE; GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&compareMode); + // disable LOD bias, we control our own sampling + float lodBias = 0.0f; + if(!IsGLES) + GL.glTextureParameterfvEXT(texname, target, eGL_TEXTURE_LOD_BIAS, &lodBias); + // always want to clamp GLenum param = eGL_CLAMP_TO_EDGE; GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)¶m); @@ -1394,6 +1401,8 @@ void GLReplay::RestoreSamplerParams(GLenum target, GLuint texname, TextureSample 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); + if(!IsGLES) + GL.glTextureParameterfvEXT(texname, target, eGL_TEXTURE_LOD_BIAS, &state.lodBias); } void GLReplay::FillWithDiscardPattern(DiscardType type, GLuint framebuffer, GLsizei numAttachments, diff --git a/renderdoc/driver/gl/gl_replay.h b/renderdoc/driver/gl/gl_replay.h index 83ecf7b04..ec0052a60 100644 --- a/renderdoc/driver/gl/gl_replay.h +++ b/renderdoc/driver/gl/gl_replay.h @@ -358,6 +358,7 @@ private: GLenum wrapT = eGL_CLAMP_TO_EDGE; GLenum wrapR = eGL_CLAMP_TO_EDGE; GLenum compareMode = eGL_NONE; + float lodBias = 0.0f; }; // sets the desired parameters, and returns the previous ones ready to restore