Browse Source

maxwell_to_gl: Use GL_CLAMP to emulate Clamp wrap mode

pull/15/merge
ReinUsesLisp 7 years ago
parent
commit
a89cc0bafc
  1. 7
      src/video_core/renderer_opengl/maxwell_to_gl.h
  2. 2
      src/video_core/renderer_vulkan/maxwell_to_vk.cpp
  3. 2
      src/video_core/textures/texture.h

7
src/video_core/renderer_opengl/maxwell_to_gl.h

@ -175,11 +175,8 @@ inline GLenum WrapMode(Tegra::Texture::WrapMode wrap_mode) {
return GL_CLAMP_TO_EDGE;
case Tegra::Texture::WrapMode::Border:
return GL_CLAMP_TO_BORDER;
case Tegra::Texture::WrapMode::ClampOGL:
// TODO(Subv): GL_CLAMP was removed as of OpenGL 3.1, to implement GL_CLAMP, we can use
// GL_CLAMP_TO_BORDER to get the border color of the texture, and then sample the edge to
// manually mix them. However the shader part of this is not yet implemented.
return GL_CLAMP_TO_BORDER;
case Tegra::Texture::WrapMode::Clamp:
return GL_CLAMP;
case Tegra::Texture::WrapMode::MirrorOnceClampToEdge:
return GL_MIRROR_CLAMP_TO_EDGE;
case Tegra::Texture::WrapMode::MirrorOnceBorder:

2
src/video_core/renderer_vulkan/maxwell_to_vk.cpp

@ -52,7 +52,7 @@ vk::SamplerAddressMode WrapMode(Tegra::Texture::WrapMode wrap_mode) {
return vk::SamplerAddressMode::eClampToEdge;
case Tegra::Texture::WrapMode::Border:
return vk::SamplerAddressMode::eClampToBorder;
case Tegra::Texture::WrapMode::ClampOGL:
case Tegra::Texture::WrapMode::Clamp:
// TODO(Rodrigo): GL_CLAMP was removed as of OpenGL 3.1, to implement GL_CLAMP, we can use
// eClampToBorder to get the border color of the texture, and then sample the edge to
// manually mix them. However the shader part of this is not yet implemented.

2
src/video_core/textures/texture.h

@ -251,7 +251,7 @@ enum class WrapMode : u32 {
Mirror = 1,
ClampToEdge = 2,
Border = 3,
ClampOGL = 4,
Clamp = 4,
MirrorOnceClampToEdge = 5,
MirrorOnceBorder = 6,
MirrorOnceClampOGL = 7,

Loading…
Cancel
Save