Converted more shaders.

This commit is contained in:
hiker 2015-05-07 19:18:24 +10:00
parent b441dba764
commit 38a1deeff5
4 changed files with 141 additions and 41 deletions

View File

@ -831,7 +831,8 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/encode_normal.frag",
GL_FRAGMENT_SHADER, "instanced_objectref_pass1.frag");
assignUniforms("windDir");
assignSamplerNames(m_program, 0, "tex", 1, "glosstex");
assignSamplerNames(m_program, 0, "tex", ST_TRILINEAR_ANISOTROPIC_FILTERED,
1, "glosstex", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedNormalMapShader::InstancedNormalMapShader()
@ -842,7 +843,8 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/encode_normal.frag",
GL_FRAGMENT_SHADER, "instanced_normalmap.frag");
assignUniforms();
assignSamplerNames(m_program, 0, "normalMap", 1, "glossMap");
assignSamplerNames(m_program, 0, "normalMap", ST_TRILINEAR_ANISOTROPIC_FILTERED,
1, "glossMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
// Solid Lit pass shaders
@ -853,7 +855,11 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "object_pass2.frag");
assignUniforms("ModelMatrix", "TextureMatrix");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedObjectPass2Shader::InstancedObjectPass2Shader()
@ -864,7 +870,11 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "instanced_object_pass2.frag");
assignUniforms();
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedObjectRefPass2Shader::InstancedObjectRefPass2Shader()
@ -875,7 +885,11 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "instanced_objectref_pass2.frag");
assignUniforms();
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
DetailledObjectPass2Shader::DetailledObjectPass2Shader()
@ -885,7 +899,12 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "detailledobject_pass2.frag");
assignUniforms("ModelMatrix");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "Detail", 5, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "Detail", ST_TRILINEAR_ANISOTROPIC_FILTERED,
5, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedDetailledObjectPass2Shader::InstancedDetailledObjectPass2Shader()
@ -896,7 +915,12 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "instanced_detailledobject_pass2.frag");
assignUniforms();
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "Detail", 5, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "Detail", ST_TRILINEAR_ANISOTROPIC_FILTERED,
5, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
ObjectUnlitShader::ObjectUnlitShader()
@ -905,7 +929,10 @@ namespace MeshShader
GL_VERTEX_SHADER, "object_pass.vert",
GL_FRAGMENT_SHADER, "object_unlit.frag");
assignUniforms("ModelMatrix", "TextureMatrix");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "tex");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "tex", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedObjectUnlitShader::InstancedObjectUnlitShader()
@ -915,7 +942,10 @@ namespace MeshShader
GL_VERTEX_SHADER, "instanced_object_pass.vert",
GL_FRAGMENT_SHADER, "instanced_object_unlit.frag");
assignUniforms();
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "tex");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "tex", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
ObjectRefPass2Shader::ObjectRefPass2Shader()
@ -925,7 +955,11 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "objectref_pass2.frag");
assignUniforms("ModelMatrix", "TextureMatrix");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
GrassPass2Shader::GrassPass2Shader()
@ -935,7 +969,11 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "grass_pass2.frag");
assignUniforms("ModelMatrix", "windDir");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "Albedo", 4, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedGrassPass2Shader::InstancedGrassPass2Shader()
@ -946,7 +984,12 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getLightFactor.frag",
GL_FRAGMENT_SHADER, "instanced_grass_pass2.frag");
assignUniforms("windDir", "SunDir");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "dtex", 4, "Albedo", 5, "SpecMap");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "dtex", ST_NEAREST_FILTERED,
4, "Albedo", ST_TRILINEAR_ANISOTROPIC_FILTERED,
5, "SpecMap", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
SphereMapShader::SphereMapShader()
@ -957,7 +1000,10 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getPosFromUVDepth.frag",
GL_FRAGMENT_SHADER, "objectpass_spheremap.frag");
assignUniforms("ModelMatrix", "InverseModelMatrix");
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "tex");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "tex", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
InstancedSphereMapShader::InstancedSphereMapShader()
@ -969,7 +1015,10 @@ namespace MeshShader
GL_FRAGMENT_SHADER, "utils/getPosFromUVDepth.frag",
GL_FRAGMENT_SHADER, "instanced_objectpass_spheremap.frag");
assignUniforms();
assignSamplerNames(m_program, 0, "DiffuseMap", 1, "SpecularMap", 2, "SSAO", 3, "tex");
assignSamplerNames(m_program, 0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "tex", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
SplattingShader::SplattingShader()
@ -981,14 +1030,14 @@ namespace MeshShader
assignUniforms("ModelMatrix");
assignSamplerNames(m_program,
0, "DiffuseMap",
1, "SpecularMap",
2, "SSAO",
3, "tex_layout",
4, "tex_detail0",
5, "tex_detail1",
6, "tex_detail2",
7, "tex_detail3");
0, "DiffuseMap", ST_NEAREST_FILTERED,
1, "SpecularMap", ST_NEAREST_FILTERED,
2, "SSAO", ST_BILINEAR_FILTERED,
3, "tex_layout", ST_TRILINEAR_ANISOTROPIC_FILTERED,
4, "tex_detail0", ST_TRILINEAR_ANISOTROPIC_FILTERED,
5, "tex_detail1", ST_TRILINEAR_ANISOTROPIC_FILTERED,
6, "tex_detail2", ST_TRILINEAR_ANISOTROPIC_FILTERED,
7, "tex_detail3", ST_TRILINEAR_ANISOTROPIC_FILTERED);
}
TransparentShader::TransparentShader()

View File

@ -103,91 +103,124 @@ public:
InstancedObjectRefPass1Shader();
};
class InstancedGrassPass1Shader : public Shader<InstancedGrassPass1Shader, core::vector3df>, public TextureRead<Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedGrassPass1Shader : public Shader<InstancedGrassPass1Shader, core::vector3df>,
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedGrassPass1Shader();
};
class InstancedNormalMapShader : public Shader<InstancedNormalMapShader>, public TextureRead<Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedNormalMapShader : public Shader<InstancedNormalMapShader>,
public TextureReadNew<ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedNormalMapShader();
};
class ObjectPass2Shader : public Shader<ObjectPass2Shader, core::matrix4, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class ObjectPass2Shader : public Shader<ObjectPass2Shader, core::matrix4, core::matrix4>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
ObjectPass2Shader();
};
class InstancedObjectPass2Shader : public Shader<InstancedObjectPass2Shader>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedObjectPass2Shader : public Shader<InstancedObjectPass2Shader>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedObjectPass2Shader();
};
class InstancedObjectRefPass2Shader : public Shader<InstancedObjectRefPass2Shader>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedObjectRefPass2Shader : public Shader<InstancedObjectRefPass2Shader>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedObjectRefPass2Shader();
};
class DetailledObjectPass2Shader : public Shader<DetailledObjectPass2Shader, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class DetailledObjectPass2Shader : public Shader<DetailledObjectPass2Shader, core::matrix4>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
DetailledObjectPass2Shader();
};
class InstancedDetailledObjectPass2Shader : public Shader<InstancedDetailledObjectPass2Shader>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedDetailledObjectPass2Shader : public Shader<InstancedDetailledObjectPass2Shader>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED >
{
public:
InstancedDetailledObjectPass2Shader();
};
class ObjectUnlitShader : public Shader<ObjectUnlitShader, core::matrix4, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered>
class ObjectUnlitShader : public Shader<ObjectUnlitShader, core::matrix4, core::matrix4>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
ST_BILINEAR_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED >
{
public:
ObjectUnlitShader();
};
class InstancedObjectUnlitShader : public Shader<InstancedObjectUnlitShader>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedObjectUnlitShader : public Shader<InstancedObjectUnlitShader>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
ST_BILINEAR_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedObjectUnlitShader();
};
class ObjectRefPass2Shader : public Shader<ObjectRefPass2Shader, core::matrix4, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class ObjectRefPass2Shader : public Shader<ObjectRefPass2Shader, core::matrix4, core::matrix4>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
ObjectRefPass2Shader();
};
class GrassPass2Shader : public Shader<GrassPass2Shader, core::matrix4, core::vector3df>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class GrassPass2Shader : public Shader<GrassPass2Shader, core::matrix4, core::vector3df>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
GrassPass2Shader();
};
class InstancedGrassPass2Shader : public Shader<InstancedGrassPass2Shader, core::vector3df, core::vector3df>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Nearest_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedGrassPass2Shader : public Shader<InstancedGrassPass2Shader, core::vector3df, core::vector3df>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_NEAREST_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedGrassPass2Shader();
};
class SphereMapShader : public Shader<SphereMapShader, core::matrix4, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered>
class SphereMapShader : public Shader<SphereMapShader, core::matrix4, core::matrix4>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
ST_BILINEAR_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
SphereMapShader();
};
class InstancedSphereMapShader : public Shader<InstancedSphereMapShader>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered>
class InstancedSphereMapShader : public Shader<InstancedSphereMapShader>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED,
ST_BILINEAR_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
InstancedSphereMapShader();
};
class SplattingShader : public Shader<SplattingShader, core::matrix4>, public TextureRead<Nearest_Filtered, Nearest_Filtered, Bilinear_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered, Trilinear_Anisotropic_Filtered>
class SplattingShader : public Shader<SplattingShader, core::matrix4>,
public TextureReadNew<ST_NEAREST_FILTERED, ST_NEAREST_FILTERED, ST_BILINEAR_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED, ST_TRILINEAR_ANISOTROPIC_FILTERED,
ST_TRILINEAR_ANISOTROPIC_FILTERED>
{
public:
SplattingShader();

View File

@ -23,13 +23,15 @@
TextureReadBaseNew::BindFunction TextureReadBaseNew::m_all_bind_functions[] =
{ /* ST_NEAREST_FILTERED */ &TextureReadBaseNew::bindTextureNearest,
/* ST_TRILINEAR_ANISOTROPIC_FILTERED */ &TextureReadBaseNew::bindTextureTrilinearAnisotropic,
/* ST_TRILINEAR_CUBEMAP */ &TextureReadBaseNew::bindCubemapTrilinear
/* ST_TRILINEAR_CUBEMAP */ &TextureReadBaseNew::bindCubemapTrilinear,
/* ST_BILINEAR_FILTERED */ &TextureReadBaseNew::bindTextureBilinear
};
GLuint TextureReadBaseNew::m_all_texture_types[] =
{ /* ST_NEAREST_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,
/* ST_BILINEAR_FILTERED */ GL_TEXTURE_2D };
// ----------------------------------------------------------------------------
void TextureReadBaseNew::bindTextureNearest(GLuint texture_unit, GLuint tex)
@ -134,6 +136,8 @@ GLuint TextureReadBaseNew::createSamplers(SamplerTypeNew sampler_type)
return createTrilinearSampler();
case ST_TRILINEAR_CUBEMAP:
return createTrilinearSampler();
case ST_BILINEAR_FILTERED:
return createBilinearSampler();
default:
assert(false);
return 0;
@ -174,6 +178,19 @@ GLuint TextureReadBaseNew::createTrilinearSampler()
} // createTrilinearSampler
// ----------------------------------------------------------------------------
GLuint TextureReadBaseNew::createBilinearSampler()
{
#ifdef GL_VERSION_3_3
unsigned id;
glGenSamplers(1, &id);
glSamplerParameteri(id, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glSamplerParameteri(id, GL_TEXTURE_WRAP_S, GL_REPEAT);
glSamplerParameteri(id, GL_TEXTURE_WRAP_T, GL_REPEAT);
glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.);
return id;
#endif
} // createBilinearSampler
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------

View File

@ -28,10 +28,10 @@ enum SamplerTypeNew {
ST_NEAREST_FILTERED = ST_MIN,
ST_TRILINEAR_ANISOTROPIC_FILTERED,
ST_TRILINEAR_CUBEMAP,
ST_MAX = ST_TRILINEAR_CUBEMAP,
ST_BILINEAR_FILTERED,
ST_MAX = ST_BILINEAR_FILTERED,
ST_SEMI_TRILINEAR,
ST_BILINEAR_FILTERED,
ST_BILINEAR_CLAMPED_FILTERED,
ST_NEARED_CLAMPED_FILTERED,
ST_SHADOW_SAMPLER,
@ -59,6 +59,7 @@ private:
static GLuint createNearestSampler();
static GLuint createTrilinearSampler();
static GLuint createBilinearSampler();
protected:
static BindFunction m_all_bind_functions[];