From ea93ceb19e725ad4b55d46d8f8e6f7e4aed9bb39 Mon Sep 17 00:00:00 2001 From: "R.E. Kovalev" Date: Mon, 19 Jun 2023 10:40:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=B3=D0=B0=D0=BC=D0=BC=D0=B0-=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BC=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=B0=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Scene.cpp | 7 +++++-- src/main.cpp | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Scene.cpp b/src/Scene.cpp index 6dedce9..5e56492 100644 --- a/src/Scene.cpp +++ b/src/Scene.cpp @@ -115,6 +115,9 @@ Scene loadOBJtoScene(const char* filename, const char* mtl_directory, const char std::string err; + // Значение гамма-коррекции + extern float inv_gamma; + // Если в процессе загрузки возникли ошибки - выдадим исключение if (!tinyobj::LoadObj(&attrib, &shapes, &materials, &err, filename, mtl_directory)) throw std::runtime_error(err); @@ -214,8 +217,8 @@ Scene loadOBJtoScene(const char* filename, const char* mtl_directory, const char s->set_texture(specular); // Материал - s->material.ka = glm::vec3(materials[materials_ids[i]].ambient[0], materials[materials_ids[i]].ambient[1], materials[materials_ids[i]].ambient[2]); - s->material.kd = glm::vec3(materials[materials_ids[i]].diffuse[0], materials[materials_ids[i]].diffuse[1], materials[materials_ids[i]].diffuse[2]); + s->material.ka = pow(glm::vec3(materials[materials_ids[i]].ambient[0], materials[materials_ids[i]].ambient[1], materials[materials_ids[i]].ambient[2]), glm::vec3(1/inv_gamma)); + s->material.kd = pow(glm::vec3(materials[materials_ids[i]].diffuse[0], materials[materials_ids[i]].diffuse[1], materials[materials_ids[i]].diffuse[2]), glm::vec3(1/inv_gamma)); s->material.ks = glm::vec3(materials[materials_ids[i]].specular[0], materials[materials_ids[i]].specular[1], materials[materials_ids[i]].specular[2]); s->material.p = (materials[materials_ids[i]].shininess > 0.0f) ? 1000.0f / materials[materials_ids[i]].shininess : 1000.0f; } diff --git a/src/main.cpp b/src/main.cpp index 6b08b90..93ac2f6 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,6 +24,9 @@ Texture* pssaoTexture_raw = NULL; int WINDOW_WIDTH = 800; int WINDOW_HEIGHT = 600; +// Значение гамма-коррекции +float inv_gamma = 1/2.2; + // Функция-callback для изменения размеров буфера кадра в случае изменения размеров поверхности окна void framebuffer_size_callback(GLFWwindow* window, int width, int height) { @@ -426,7 +429,6 @@ int main(void) skyboxShader.bindTextures(skybox_shader_names, sizeof(skybox_shader_names)/sizeof(const char*)); // Значение гамма-коррекции - float inv_gamma = 1/2.2; UBO gamma(&inv_gamma, sizeof(inv_gamma), 4); // Пока не произойдет событие запроса закрытия окна