From 37deb472ea228ad96fb7372ac769c65b5c17d39c Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 20 Nov 2019 12:01:25 +0000 Subject: [PATCH] Ensure WRAP_R is set to CLAMP_TO_EDGE when sampling textures in GL --- renderdoc/driver/gl/gl_debug.cpp | 3 +++ renderdoc/driver/gl/gl_replay.h | 1 + 2 files changed, 4 insertions(+) diff --git a/renderdoc/driver/gl/gl_debug.cpp b/renderdoc/driver/gl/gl_debug.cpp index 6a55cabc5..38ea42369 100644 --- a/renderdoc/driver/gl/gl_debug.cpp +++ b/renderdoc/driver/gl/gl_debug.cpp @@ -1281,6 +1281,7 @@ 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_WRAP_R, (GLint *)&ret.wrapR); GL.glGetTextureParameterivEXT(texname, target, eGL_TEXTURE_COMPARE_MODE, (GLint *)&ret.compareMode); // disable depth comparison @@ -1291,6 +1292,7 @@ GLReplay::TextureSamplerState GLReplay::SetSamplerParams(GLenum target, GLuint t GLenum param = eGL_CLAMP_TO_EDGE; GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)¶m); GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)¶m); + GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_R, (GLint *)¶m); // depending on the mode, set min/mag filter GLenum minFilter = eGL_NEAREST; @@ -1326,6 +1328,7 @@ void GLReplay::RestoreSamplerParams(GLenum target, GLuint texname, TextureSample GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_S, (GLint *)&state.wrapS); GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_T, (GLint *)&state.wrapT); + GL.glTextureParameterivEXT(texname, target, eGL_TEXTURE_WRAP_R, (GLint *)&state.wrapR); 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); diff --git a/renderdoc/driver/gl/gl_replay.h b/renderdoc/driver/gl/gl_replay.h index 12b42f80c..b0dc11cc0 100644 --- a/renderdoc/driver/gl/gl_replay.h +++ b/renderdoc/driver/gl/gl_replay.h @@ -304,6 +304,7 @@ private: GLenum magFilter = eGL_NEAREST; GLenum wrapS = eGL_CLAMP_TO_EDGE; GLenum wrapT = eGL_CLAMP_TO_EDGE; + GLenum wrapR = eGL_CLAMP_TO_EDGE; GLenum compareMode = eGL_NONE; };