Texture linear filtering doens't use mipmaps + add mipmapped filtering

This commit is contained in:
Nikita Lisitsa 2020-10-25 16:09:05 +03:00
parent 53c4e0b449
commit 356aabf3ab
2 changed files with 15 additions and 5 deletions

View file

@ -67,7 +67,7 @@ deferred_app::deferred_app()
camera.azimuthal_angle = 0.f;
camera.elevation_angle = geom::rad(30.f);
pre_gamma_texture.nearest_filter();
pre_gamma_texture.linear_filter();
// 0 - vec3 position
// 1 - vec4 color (used if color & texture are not set)
@ -373,17 +373,17 @@ void deferred_app::render()
options.directional_lights[0].direction = {1.f, 2.f, 3.f};
options.point_lights.emplace_back();
options.point_lights[0].color = {15.f, 10.f, 10.f};
options.point_lights[0].color = {20.f, 0.f, 0.f};
options.point_lights[0].position = {2.f * std::cos(time / 2.f), 2.f * std::sin(time / 2.f), 2.f};
options.point_lights[0].attenuation = {1.f, 0.1f, 0.05f};
options.point_lights.emplace_back();
options.point_lights[1].color = {10.f, 10.f, 15.f};
options.point_lights[1].color = {0.f, 0.f, 20.f};
options.point_lights[1].position = {-6.f * std::cos(time / 2.f), -6.f * std::sin(time / 2.f), 2.f};
options.point_lights[1].attenuation = {1.f, 0.1f, 0.05f};
options.point_lights.emplace_back();
options.point_lights[2].color = {10.f, 15.f, 10.f};
options.point_lights[2].color = {0.f, 20.f, 0.f};
options.point_lights[2].position = {0.f, 0.f, 4.f};
options.point_lights[2].attenuation = {1.f, 0.1f, 0.05f};
@ -412,7 +412,7 @@ void deferred_app::render()
float const gamma = 2.2f;
options.max_intensity = 15.f;
options.max_intensity = 20.f;
gfx::framebuffer::null().bind();
gl::DrawBuffer(gl::BACK);

View file

@ -60,6 +60,7 @@ namespace psemek::gfx
void generate_mipmap();
void nearest_filter();
void linear_filter();
void linear_mipmap_filter();
void anisotropy();
void repeat();
@ -263,12 +264,21 @@ namespace psemek::gfx
template <std::size_t D, GLenum Target>
void basic_texture<D, Target>::linear_filter()
{
bind();
gl::TexParameteri(Target, gl::TEXTURE_MIN_FILTER, gl::LINEAR);
gl::TexParameteri(Target, gl::TEXTURE_MAG_FILTER, gl::LINEAR);
}
template <std::size_t D, GLenum Target>
void basic_texture<D, Target>::linear_mipmap_filter()
{
bind();
gl::TexParameteri(Target, gl::TEXTURE_MIN_FILTER, gl::LINEAR_MIPMAP_LINEAR);
gl::TexParameteri(Target, gl::TEXTURE_MAG_FILTER, gl::LINEAR);
}
template <std::size_t D, GLenum Target>
void basic_texture<D, Target>::anisotropy()
{