From 6753d8082f815ff878538c2a9c64310686b2ea90 Mon Sep 17 00:00:00 2001 From: Mathias Paulin <mathias.paulin@irit.fr> Date: Fri, 9 Apr 2021 16:45:13 +0200 Subject: [PATCH] Remplace material parameter by roughnes parameter in getEnvMapColors --- src/DemoApp/main.cpp | 3 ++- src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.cpp | 6 +++--- src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.hpp | 3 ++- src/libRender/RadiumNBR/Renderer/Visualization.hpp | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/DemoApp/main.cpp b/src/DemoApp/main.cpp index a2b6dd5..5f8827c 100644 --- a/src/DemoApp/main.cpp +++ b/src/DemoApp/main.cpp @@ -174,7 +174,8 @@ const std::string customFragmentColor{ "vec3(0, 0, 1), diffColor, specColor );\n" "vec3 envd;\n" "vec3 envs;\n" - "int e = getEnvMapColors(mat, normal_world, envd, envs);" + "float r = getGGXRoughness(mat, getPerVertexTexCoord());\n" + "int e = getEnvMapColors(r, normal_world, envd, envs);" "vec3 finalColor = normal_world*0.5+0.5;\n" "finalColor *= fragCustomAttrib.rgb;\n" "if (e==1) { finalColor = finalColor*envd + specColor*envs; }\n" diff --git a/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.cpp b/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.cpp index c4d29a2..43f4711 100644 --- a/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.cpp +++ b/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.cpp @@ -21,7 +21,7 @@ using namespace gl; // Envmap shader source static const std::string noopEnvMapFunction{ - "\nint getEnvMapColors(Material mat, vec3 normalWorld, out vec3 diffuse, out vec3 specular) {\n" + "\nint getEnvMapColors(float roughness, vec3 normalWorld, out vec3 diffuse, out vec3 specular) {\n" " diffuse = vec3(1); specular = vec3(1); return 0;\n" "}\n\n" }; @@ -34,7 +34,7 @@ static const std::string envMapFunction{ "uniform mat4 blueShCoeffs;\n" "uniform float envStrength;\n" "const float OneOverPi = 0.3183098862;\n" - "int getEnvMapColors(Material mat, vec3 normalWorld, out vec3 diffuse, out vec3 specular) {\n" + "int getEnvMapColors(float roughness, vec3 normalWorld, out vec3 diffuse, out vec3 specular) {\n" " vec3 view = normalize(in_viewVector);\n" " vec3 rfl = reflect(-view, normalWorld.xyz);\n" " vec4 up = vec4(normalWorld, 1);\n" @@ -43,7 +43,7 @@ static const std::string envMapFunction{ " diffuse.b = dot(up, blueShCoeffs * up);\n" " diffuse *= envStrength/OneOverPi;\n" " float cosTi = clamp(dot(rfl, normalWorld), 0.001, 1.);\n" - " float r = getGGXRoughness(material, getPerVertexTexCoord()) * numLod;\n" + " float r = roughness * numLod;\n" " specular = textureLod(envTexture, rfl, r).rgb * cosTi * envStrength;\n" " return 1;\n" "}\n\n"}; diff --git a/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.hpp b/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.hpp index 7e1309a..fa0745b 100644 --- a/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.hpp +++ b/src/libRender/RadiumNBR/Passes/CustomAttribToColorPass.hpp @@ -99,7 +99,8 @@ class CustomAttribToColorPass : public RenderPass "vec3(0, 0, 1), diffColor, specColor );\n" "vec3 envd;\n" "vec3 envs;\n" - "int e = getEnvMapColors(mat, normal_world, envd, envs);" + "float r = getGGXRoughness(mat, getPerVertexTexCoord());\n" + "int e = getEnvMapColors(r, normal_world, envd, envs);" "vec3 finalColor;\n" "if (e==1) { finalColor = diffColor*envd + specColor*envs; }\n" "else { finalColor = (diffColor + specColor) * max(lightDir.z, 0) \n" diff --git a/src/libRender/RadiumNBR/Renderer/Visualization.hpp b/src/libRender/RadiumNBR/Renderer/Visualization.hpp index 5c48202..85813d3 100644 --- a/src/libRender/RadiumNBR/Renderer/Visualization.hpp +++ b/src/libRender/RadiumNBR/Renderer/Visualization.hpp @@ -59,7 +59,8 @@ class NodeBasedRenderer_LIBRARY_API VisualizationController "vec3(0, 0, 1), diffColor, specColor );\n" "vec3 envd;\n" "vec3 envs;\n" - "int e = getEnvMapColors(mat, normal_world, envd, envs);" + "float r = getGGXRoughness(mat, getPerVertexTexCoord());\n" + "int e = getEnvMapColors(r, normal_world, envd, envs);" "vec3 finalColor;\n" "if (e==1) { finalColor = diffColor*envd + specColor*envs; }\n" "else { finalColor = (diffColor + specColor) * max(lightDir.z, 0) \n" -- GitLab