Fixed specular mapping
Also made code clearer Former-commit-id: f27a9214f356218fdf7e75003317a1678079fe2a
This commit is contained in:
parent
f8aedb2df1
commit
c108deb999
|
|
@ -148,10 +148,10 @@ namespace
|
||||||
// Directional Light
|
// Directional Light
|
||||||
sourceCode += "{\n"
|
sourceCode += "{\n"
|
||||||
"vec3 lightDir = normalize(-Lights[i].parameters1.xyz);\n"
|
"vec3 lightDir = normalize(-Lights[i].parameters1.xyz);\n"
|
||||||
"light += Lights[i].ambient.xyz * (MaterialAmbient.xyz + SceneAmbient.xyz);\n"
|
"light += Lights[i].ambient.rgb * (MaterialAmbient.rgb + SceneAmbient.rgb);\n"
|
||||||
"\n"
|
"\n"
|
||||||
"float lambert = max(dot(normal, lightDir), 0.0);\n"
|
"float lambert = max(dot(normal, lightDir), 0.0);\n"
|
||||||
"light += lambert * Lights[i].diffuse.xyz * MaterialDiffuse.xyz;\n"
|
"light += lambert * Lights[i].diffuse.rgb * MaterialDiffuse.rgb;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"if (MaterialShininess > 0.0)\n"
|
"if (MaterialShininess > 0.0)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
@ -165,7 +165,7 @@ namespace
|
||||||
else
|
else
|
||||||
sourceCode += "light";
|
sourceCode += "light";
|
||||||
|
|
||||||
sourceCode += " += specular * Lights[i].specular.xyz * MaterialSpecular.xyz;\n"
|
sourceCode += " += specular * Lights[i].specular.rgb * MaterialSpecular.rgb;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
if (glsl140)
|
if (glsl140)
|
||||||
|
|
@ -184,11 +184,11 @@ namespace
|
||||||
"vec3 lightDir = Lights[i].parameters1.xyz - vWorldPos;\n"
|
"vec3 lightDir = Lights[i].parameters1.xyz - vWorldPos;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*length(lightDir), 0.0);\n"
|
"float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*length(lightDir), 0.0);\n"
|
||||||
"light += att * Lights[i].ambient.xyz * (MaterialAmbient.xyz + SceneAmbient.xyz);\n"
|
"light += att * Lights[i].ambient.rgb * (MaterialAmbient.rgb + SceneAmbient.rgb);\n"
|
||||||
"\n"
|
"\n"
|
||||||
"lightDir = normalize(lightDir);\n"
|
"lightDir = normalize(lightDir);\n"
|
||||||
"float lambert = max(dot(normal, lightDir), 0.0);\n"
|
"float lambert = max(dot(normal, lightDir), 0.0);\n"
|
||||||
"light += att * lambert * Lights[i].diffuse.xyz * MaterialDiffuse.xyz;\n"
|
"light += att * lambert * Lights[i].diffuse.rgb * MaterialDiffuse.rgb;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"if (MaterialShininess > 0.0)\n"
|
"if (MaterialShininess > 0.0)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
@ -202,7 +202,7 @@ namespace
|
||||||
else
|
else
|
||||||
sourceCode += "light";
|
sourceCode += "light";
|
||||||
|
|
||||||
sourceCode += " += att * specular * Lights[i].specular.xyz * MaterialSpecular.xyz;\n"
|
sourceCode += " += att * specular * Lights[i].specular.rgb * MaterialSpecular.rgb;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
if (glsl140)
|
if (glsl140)
|
||||||
|
|
@ -223,7 +223,7 @@ namespace
|
||||||
"vec3 lightDir = Lights[i].parameters1.xyz - vWorldPos;\n"
|
"vec3 lightDir = Lights[i].parameters1.xyz - vWorldPos;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*length(lightDir), 0.0);\n"
|
"float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*length(lightDir), 0.0);\n"
|
||||||
"light += att * Lights[i].ambient.xyz * (MaterialAmbient.xyz + SceneAmbient.xyz);\n"
|
"light += att * Lights[i].ambient.rgb * (MaterialAmbient.rgb + SceneAmbient.rgb);\n"
|
||||||
"\n"
|
"\n"
|
||||||
"lightDir = normalize(lightDir);\n"
|
"lightDir = normalize(lightDir);\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
@ -232,7 +232,7 @@ namespace
|
||||||
"float innerMinusOuterAngle = Lights[i].parameters3.x - outerAngle;\n"
|
"float innerMinusOuterAngle = Lights[i].parameters3.x - outerAngle;\n"
|
||||||
"float lambert = max(dot(normal, lightDir), 0.0);\n"
|
"float lambert = max(dot(normal, lightDir), 0.0);\n"
|
||||||
"float spot = max((curAngle - outerAngle) / innerMinusOuterAngle, 0.0);\n"
|
"float spot = max((curAngle - outerAngle) / innerMinusOuterAngle, 0.0);\n"
|
||||||
"light += att * lambert * spot * Lights[i].diffuse.xyz * MaterialDiffuse.xyz;\n"
|
"light += att * lambert * spot * Lights[i].diffuse.rgb * MaterialDiffuse.rgb;\n"
|
||||||
"\n"
|
"\n"
|
||||||
"if (MaterialShininess > 0.0)\n"
|
"if (MaterialShininess > 0.0)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
@ -246,7 +246,7 @@ namespace
|
||||||
else
|
else
|
||||||
sourceCode += "light";
|
sourceCode += "light";
|
||||||
|
|
||||||
sourceCode += " += att * specular * spot * Lights[i].specular.xyz * MaterialSpecular.xyz;\n"
|
sourceCode += " += att * specular * spot * Lights[i].specular.rgb * MaterialSpecular.rgb;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
if (glsl140)
|
if (glsl140)
|
||||||
|
|
@ -269,7 +269,7 @@ namespace
|
||||||
sourceCode += "*texture2D(MaterialDiffuseMap, vTexCoord)";
|
sourceCode += "*texture2D(MaterialDiffuseMap, vTexCoord)";
|
||||||
|
|
||||||
if (flags & nzShaderBuilder_SpecularMapping)
|
if (flags & nzShaderBuilder_SpecularMapping)
|
||||||
sourceCode += " + vec4(light, MaterialDiffuse.w)*texture2D(MaterialSpecularMap, vTexCoord)"; // Utiliser MaterialSpecular.w n'aurait aucun sens
|
sourceCode += " + vec4(si, MaterialDiffuse.w)*texture2D(MaterialSpecularMap, vTexCoord)"; // Utiliser MaterialSpecular.w n'aurait aucun sens
|
||||||
|
|
||||||
sourceCode += ";\n";
|
sourceCode += ";\n";
|
||||||
}
|
}
|
||||||
|
|
@ -401,6 +401,13 @@ namespace
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NAZARA_DEBUG
|
||||||
|
NazaraNotice("Fragment shader source: ");
|
||||||
|
NazaraNotice(fragmentSource);
|
||||||
|
NazaraNotice("Vertex shader source: ");
|
||||||
|
NazaraNotice(vertexSource);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!shader->Compile())
|
if (!shader->Compile())
|
||||||
{
|
{
|
||||||
NazaraError("Failed to compile shader: " + shader->GetLog());
|
NazaraError("Failed to compile shader: " + shader->GetLog());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue