diff --git a/src/DemoApp/main.cpp b/src/DemoApp/main.cpp index a2b6dd5efcdde2d5ec45b8089053bf6642604936..5f8827ccc549ff20a48577479dcd93ccb229b10c 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 c4d29a20274ef77967706af54efa419ed9b8d263..43f47119eed7c275e1f1bafdf10487940d8f8f24 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 7e1309a21eda19116aedb41ad0f6268485fcd0b3..fa0745be6dad7e709485292ec8eb94c244043af1 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 5c482029de947f8e7bebf61a41f129b74ccf9b24..85813d32746a13a5fba3c783499d56da49d4e91e 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"