Fixed rare case that anisotropic filtering feature is not available in graphics drivers.
This commit is contained in:
parent
5e05f1178c
commit
bd42f2c2df
@ -49,7 +49,8 @@ void CentralVideoSettings::init()
|
|||||||
hasUBO = false;
|
hasUBO = false;
|
||||||
hasExplicitAttribLocation = false;
|
hasExplicitAttribLocation = false;
|
||||||
hasGS = false;
|
hasGS = false;
|
||||||
|
hasTextureFilterAnisotropic = false;
|
||||||
|
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
hasBGRA = false;
|
hasBGRA = false;
|
||||||
hasColorBufferFloat = false;
|
hasColorBufferFloat = false;
|
||||||
@ -89,7 +90,7 @@ void CentralVideoSettings::init()
|
|||||||
std::string card((char*)(glGetString(GL_RENDERER)));
|
std::string card((char*)(glGetString(GL_RENDERER)));
|
||||||
GraphicsRestrictions::init(driver, card);
|
GraphicsRestrictions::init(driver, card);
|
||||||
|
|
||||||
#if !defined(USE_GLES2)
|
#if !defined(USE_GLES2)
|
||||||
if (hasGLExtension("GL_AMD_vertex_shader_layer")) {
|
if (hasGLExtension("GL_AMD_vertex_shader_layer")) {
|
||||||
hasVSLayer = true;
|
hasVSLayer = true;
|
||||||
Log::info("GLDriver", "AMD Vertex Shader Layer Present");
|
Log::info("GLDriver", "AMD Vertex Shader Layer Present");
|
||||||
@ -170,6 +171,11 @@ void CentralVideoSettings::init()
|
|||||||
hasExplicitAttribLocation = true;
|
hasExplicitAttribLocation = true;
|
||||||
Log::info("GLDriver", "ARB Explicit Attrib Location Present");
|
Log::info("GLDriver", "ARB Explicit Attrib Location Present");
|
||||||
}
|
}
|
||||||
|
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_TEXTURE_FILTER_ANISOTROPIC) &&
|
||||||
|
hasGLExtension("GL_EXT_texture_filter_anisotropic")) {
|
||||||
|
hasTextureFilterAnisotropic = true;
|
||||||
|
Log::info("GLDriver", "EXT Texture Filter Anisotropic Present");
|
||||||
|
}
|
||||||
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_GEOMETRY_SHADER) &&
|
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_GEOMETRY_SHADER) &&
|
||||||
(m_gl_major_version > 3 || (m_gl_major_version == 3 && m_gl_minor_version >= 2))) {
|
(m_gl_major_version > 3 || (m_gl_major_version == 3 && m_gl_minor_version >= 2))) {
|
||||||
hasGS = true;
|
hasGS = true;
|
||||||
@ -223,7 +229,7 @@ void CentralVideoSettings::init()
|
|||||||
hasAtomics = true;
|
hasAtomics = true;
|
||||||
hasSSBO = true;
|
hasSSBO = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_TEXTURE_FORMAT_BGRA8888) &&
|
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_TEXTURE_FORMAT_BGRA8888) &&
|
||||||
(hasGLExtension("GL_IMG_texture_format_BGRA8888") ||
|
(hasGLExtension("GL_IMG_texture_format_BGRA8888") ||
|
||||||
hasGLExtension("GL_EXT_texture_format_BGRA8888")))
|
hasGLExtension("GL_EXT_texture_format_BGRA8888")))
|
||||||
@ -231,7 +237,7 @@ void CentralVideoSettings::init()
|
|||||||
hasBGRA = true;
|
hasBGRA = true;
|
||||||
Log::info("GLDriver", "EXT texture format BGRA8888 Present");
|
Log::info("GLDriver", "EXT texture format BGRA8888 Present");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_COLOR_BUFFER_FLOAT) &&
|
if (!GraphicsRestrictions::isDisabled(GraphicsRestrictions::GR_COLOR_BUFFER_FLOAT) &&
|
||||||
hasGLExtension("GL_EXT_color_buffer_float"))
|
hasGLExtension("GL_EXT_color_buffer_float"))
|
||||||
{
|
{
|
||||||
@ -357,6 +363,11 @@ bool CentralVideoSettings::isARBMultiDrawIndirectUsable() const
|
|||||||
return hasMultiDrawIndirect;
|
return hasMultiDrawIndirect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CentralVideoSettings::isEXTTextureFilterAnisotropicUsable() const
|
||||||
|
{
|
||||||
|
return hasTextureFilterAnisotropic;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
bool CentralVideoSettings::isEXTTextureFormatBGRA8888Usable() const
|
bool CentralVideoSettings::isEXTTextureFormatBGRA8888Usable() const
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,8 @@ private:
|
|||||||
bool hasSSBO;
|
bool hasSSBO;
|
||||||
bool hasImageLoadStore;
|
bool hasImageLoadStore;
|
||||||
bool hasMultiDrawIndirect;
|
bool hasMultiDrawIndirect;
|
||||||
|
bool hasTextureFilterAnisotropic;
|
||||||
|
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
bool hasBGRA;
|
bool hasBGRA;
|
||||||
bool hasColorBufferFloat;
|
bool hasColorBufferFloat;
|
||||||
@ -80,7 +81,8 @@ public:
|
|||||||
bool isARBImageLoadStoreUsable() const;
|
bool isARBImageLoadStoreUsable() const;
|
||||||
bool isARBMultiDrawIndirectUsable() const;
|
bool isARBMultiDrawIndirectUsable() const;
|
||||||
bool isARBExplicitAttribLocationUsable() const;
|
bool isARBExplicitAttribLocationUsable() const;
|
||||||
|
bool isEXTTextureFilterAnisotropicUsable() const;
|
||||||
|
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
bool isEXTTextureFormatBGRA8888Usable() const;
|
bool isEXTTextureFormatBGRA8888Usable() const;
|
||||||
bool isEXTColorBufferFloatUsable() const;
|
bool isEXTColorBufferFloatUsable() const;
|
||||||
|
@ -57,6 +57,7 @@ namespace GraphicsRestrictions
|
|||||||
"TextureCompressionS3TC",
|
"TextureCompressionS3TC",
|
||||||
"AMDVertexShaderLayer",
|
"AMDVertexShaderLayer",
|
||||||
"ExplicitAttribLocation",
|
"ExplicitAttribLocation",
|
||||||
|
"TextureFilterAnisotropic",
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
"TextureFormatBGRA8888",
|
"TextureFormatBGRA8888",
|
||||||
"ColorBufferFloat",
|
"ColorBufferFloat",
|
||||||
@ -215,7 +216,7 @@ public:
|
|||||||
convertVersionString(s[0]);
|
convertVersionString(s[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log::warn("Graphics", "Can not find version for '%s' '%s' - ignored.",
|
Log::warn("Graphics", "Can not find version for '%s' '%s' - ignored.",
|
||||||
driver_version.c_str(), card_name.c_str());
|
driver_version.c_str(), card_name.c_str());
|
||||||
|
|
||||||
@ -299,7 +300,7 @@ public:
|
|||||||
{
|
{
|
||||||
m_version_test = VERSION_IGNORE;
|
m_version_test = VERSION_IGNORE;
|
||||||
m_card_test = CARD_IGNORE;
|
m_card_test = CARD_IGNORE;
|
||||||
|
|
||||||
if(rule->get("is", &m_card_name))
|
if(rule->get("is", &m_card_name))
|
||||||
{
|
{
|
||||||
m_card_test = CARD_IS;
|
m_card_test = CARD_IS;
|
||||||
|
@ -32,7 +32,7 @@ namespace GraphicsRestrictions
|
|||||||
* the variable m_names_of_restrictions in the cpp file contains the
|
* the variable m_names_of_restrictions in the cpp file contains the
|
||||||
* string representation used in the XML files. Any change to this
|
* string representation used in the XML files. Any change to this
|
||||||
* type declaration needs a change in that variable as well. */
|
* type declaration needs a change in that variable as well. */
|
||||||
enum GraphicsRestrictionsType
|
enum GraphicsRestrictionsType
|
||||||
{
|
{
|
||||||
GR_UNIFORM_BUFFER_OBJECT,
|
GR_UNIFORM_BUFFER_OBJECT,
|
||||||
GR_GEOMETRY_SHADER,
|
GR_GEOMETRY_SHADER,
|
||||||
@ -51,6 +51,7 @@ namespace GraphicsRestrictions
|
|||||||
GR_EXT_TEXTURE_COMPRESSION_S3TC,
|
GR_EXT_TEXTURE_COMPRESSION_S3TC,
|
||||||
GR_AMD_VERTEX_SHADER_LAYER,
|
GR_AMD_VERTEX_SHADER_LAYER,
|
||||||
GR_EXPLICIT_ATTRIB_LOCATION,
|
GR_EXPLICIT_ATTRIB_LOCATION,
|
||||||
|
GR_TEXTURE_FILTER_ANISOTROPIC,
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
GR_TEXTURE_FORMAT_BGRA8888,
|
GR_TEXTURE_FORMAT_BGRA8888,
|
||||||
GR_COLOR_BUFFER_FLOAT,
|
GR_COLOR_BUFFER_FLOAT,
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
#include "graphics/texture_shader.hpp"
|
#include "graphics/texture_shader.hpp"
|
||||||
|
#include "graphics/central_settings.hpp"
|
||||||
|
|
||||||
#include "config/user_config.hpp"
|
#include "config/user_config.hpp"
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ TextureShaderBase::BindFunction TextureShaderBase::m_all_bind_functions[] =
|
|||||||
/* ST_SEMI_TRILINEAR */ &TextureShaderBase::bindTextureSemiTrilinear
|
/* ST_SEMI_TRILINEAR */ &TextureShaderBase::bindTextureSemiTrilinear
|
||||||
};
|
};
|
||||||
|
|
||||||
GLuint TextureShaderBase::m_all_texture_types[] =
|
GLuint TextureShaderBase::m_all_texture_types[] =
|
||||||
{ /* ST_NEAREST_FILTERED */ GL_TEXTURE_2D,
|
{ /* ST_NEAREST_FILTERED */ GL_TEXTURE_2D,
|
||||||
/* ST_TRILINEAR_ANISOTROPIC_FILTERED */ GL_TEXTURE_2D,
|
/* ST_TRILINEAR_ANISOTROPIC_FILTERED */ GL_TEXTURE_2D,
|
||||||
/* ST_TRILINEAR_CUBEMAP */ GL_TEXTURE_CUBE_MAP,
|
/* ST_TRILINEAR_CUBEMAP */ GL_TEXTURE_CUBE_MAP,
|
||||||
@ -55,7 +56,8 @@ void TextureShaderBase::bindTextureNearest(GLuint texture_unit, GLuint tex)
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
|
|
||||||
} // bindTextureNearest
|
} // bindTextureNearest
|
||||||
|
|
||||||
@ -69,9 +71,13 @@ void TextureShaderBase::bindTextureTrilinearAnisotropic(GLuint tex_unit, GLuint
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
|
|
||||||
int aniso = UserConfigParams::m_anisotropic;
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
if (aniso == 0) aniso = 1;
|
{
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)aniso);
|
int aniso = UserConfigParams::m_anisotropic;
|
||||||
|
if (aniso == 0) aniso = 1;
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
||||||
|
(float)aniso);
|
||||||
|
}
|
||||||
} // bindTextureTrilinearAnisotropic
|
} // bindTextureTrilinearAnisotropic
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -84,10 +90,13 @@ void TextureShaderBase::bindCubemapTrilinear(unsigned tex_unit, unsigned tex)
|
|||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
|
|
||||||
int aniso = UserConfigParams::m_anisotropic;
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
if (aniso == 0) aniso = 1;
|
{
|
||||||
glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
int aniso = UserConfigParams::m_anisotropic;
|
||||||
(float)aniso);
|
if (aniso == 0) aniso = 1;
|
||||||
|
glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
||||||
|
(float)aniso);
|
||||||
|
}
|
||||||
} // bindCubemapTrilinear
|
} // bindCubemapTrilinear
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -100,7 +109,8 @@ void TextureShaderBase::bindTextureNearestClamped(GLuint texture_unit,
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
} // bindTextureNearestClamped
|
} // bindTextureNearestClamped
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -114,7 +124,8 @@ void TextureShaderBase::bindTextureBilinear(GLuint texture_unit, GLuint tex)
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
} // bindTextureBilinear
|
} // bindTextureBilinear
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -126,7 +137,8 @@ void TextureShaderBase::bindTextureBilinearClamped(GLuint tex_unit, GLuint tex)
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
} // bindTextureBilinearClamped
|
} // bindTextureBilinearClamped
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -138,7 +150,8 @@ void TextureShaderBase::bindTextureSemiTrilinear(GLuint tex_unit, GLuint tex_id)
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
} // bindTextureSemiTrilinear
|
} // bindTextureSemiTrilinear
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -165,9 +178,13 @@ void TextureShaderBase::bindTrilinearClampedArrayTexture(unsigned tex_unit,
|
|||||||
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
||||||
int aniso = UserConfigParams::m_anisotropic;
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
if (aniso == 0) aniso = 1;
|
{
|
||||||
glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)aniso);
|
int aniso = UserConfigParams::m_anisotropic;
|
||||||
|
if (aniso == 0) aniso = 1;
|
||||||
|
glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT,
|
||||||
|
(float)aniso);
|
||||||
|
}
|
||||||
} // bindTrilinearClampedArrayTexture
|
} // bindTrilinearClampedArrayTexture
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -179,7 +196,8 @@ void TextureShaderBase::bindTextureVolume(unsigned tex_unit, unsigned tex_id)
|
|||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
} // bindTextureVolume
|
} // bindTextureVolume
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -211,7 +229,8 @@ GLuint TextureShaderBase::createSamplers(SamplerTypeNew sampler_type)
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
return createNearestSampler();
|
return createNearestSampler();
|
||||||
}
|
}
|
||||||
case ST_BILINEAR_CLAMPED_FILTERED:
|
case ST_BILINEAR_CLAMPED_FILTERED:
|
||||||
@ -234,7 +253,8 @@ GLuint TextureShaderBase::createNearestSampler()
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
return id;
|
return id;
|
||||||
#endif
|
#endif
|
||||||
} // createNearestSampler
|
} // createNearestSampler
|
||||||
@ -250,9 +270,12 @@ GLuint TextureShaderBase::createTrilinearSampler()
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
|
|
||||||
int aniso = UserConfigParams::m_anisotropic;
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
if (aniso == 0) aniso = 1;
|
{
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)aniso);
|
int aniso = UserConfigParams::m_anisotropic;
|
||||||
|
if (aniso == 0) aniso = 1;
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)aniso);
|
||||||
|
}
|
||||||
return id;
|
return id;
|
||||||
#endif
|
#endif
|
||||||
} // createTrilinearSampler
|
} // createTrilinearSampler
|
||||||
@ -267,7 +290,8 @@ GLuint TextureShaderBase::createBilinearSampler()
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
return id;
|
return id;
|
||||||
#endif
|
#endif
|
||||||
} // createBilinearSampler
|
} // createBilinearSampler
|
||||||
@ -297,7 +321,8 @@ GLuint TextureShaderBase::createBilinearClampedSampler()
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
return id;
|
return id;
|
||||||
#endif
|
#endif
|
||||||
} // createBilinearClampedSampler
|
} // createBilinearClampedSampler
|
||||||
@ -314,9 +339,12 @@ GLuint TextureShaderBase::createTrilinearClampedArray()
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
||||||
int aniso = UserConfigParams::m_anisotropic;
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
if (aniso == 0) aniso = 1;
|
{
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)aniso);
|
int aniso = UserConfigParams::m_anisotropic;
|
||||||
|
if (aniso == 0) aniso = 1;
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)aniso);
|
||||||
|
}
|
||||||
return id;
|
return id;
|
||||||
#endif
|
#endif
|
||||||
} // createTrilinearClampedArray
|
} // createTrilinearClampedArray
|
||||||
@ -330,7 +358,8 @@ GLuint TextureShaderBase::createSemiTrilinearSampler()
|
|||||||
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
|
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
if (CVS->isEXTTextureFilterAnisotropicUsable())
|
||||||
|
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
|
||||||
return id;
|
return id;
|
||||||
#endif
|
#endif
|
||||||
} // createSemiTrilinearSampler
|
} // createSemiTrilinearSampler
|
||||||
|
Loading…
x
Reference in New Issue
Block a user