From 356aabf3ab3d037833bfcc632b8bce050d9d9af8 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 25 Oct 2020 16:09:05 +0300 Subject: [PATCH] Texture linear filtering doens't use mipmaps + add mipmapped filtering --- examples/deferred.cpp | 10 +++++----- libs/gfx/include/psemek/gfx/texture.hpp | 10 ++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/examples/deferred.cpp b/examples/deferred.cpp index a94e0034..ff4996c3 100644 --- a/examples/deferred.cpp +++ b/examples/deferred.cpp @@ -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); diff --git a/libs/gfx/include/psemek/gfx/texture.hpp b/libs/gfx/include/psemek/gfx/texture.hpp index f4558cc0..3d5179c8 100644 --- a/libs/gfx/include/psemek/gfx/texture.hpp +++ b/libs/gfx/include/psemek/gfx/texture.hpp @@ -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 void basic_texture::linear_filter() + { + bind(); + gl::TexParameteri(Target, gl::TEXTURE_MIN_FILTER, gl::LINEAR); + gl::TexParameteri(Target, gl::TEXTURE_MAG_FILTER, gl::LINEAR); + } + + template + void basic_texture::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 void basic_texture::anisotropy() {