Improved Lighting
Former-commit-id: 6ac2d8ec9a3b283a8179e5f0bb5d5896ec57a14b
This commit is contained in:
parent
b01fad269e
commit
185b450c64
|
|
@ -79,7 +79,7 @@ void main()
|
||||||
vec3 lightDir = -Lights[i].parameters1.xyz;
|
vec3 lightDir = -Lights[i].parameters1.xyz;
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -102,7 +102,7 @@ void main()
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -122,10 +122,10 @@ void main()
|
||||||
float lightDirLength = length(lightDir);
|
float lightDirLength = length(lightDir);
|
||||||
lightDir /= lightDirLength; // Normalisation
|
lightDir /= lightDirLength; // Normalisation
|
||||||
|
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -156,7 +156,7 @@ void main()
|
||||||
vec3 lightDir = -Lights[i].parameters1.xyz;
|
vec3 lightDir = -Lights[i].parameters1.xyz;
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -172,7 +172,7 @@ void main()
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -185,10 +185,10 @@ void main()
|
||||||
float lightDirLength = length(lightDir);
|
float lightDirLength = length(lightDir);
|
||||||
lightDir /= lightDirLength; // Normalisation
|
lightDir /= lightDirLength; // Normalisation
|
||||||
|
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -204,7 +204,6 @@ void main()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightAmbient = (lightAmbient + SceneAmbient.rgb)*MaterialAmbient.rgb;
|
|
||||||
lightSpecular *= MaterialSpecular.rgb;
|
lightSpecular *= MaterialSpecular.rgb;
|
||||||
#if SPECULAR_MAPPING
|
#if SPECULAR_MAPPING
|
||||||
lightSpecular *= texture(MaterialSpecularMap, vTexCoord).rgb; // Utiliser l'alpha de MaterialSpecular n'aurait aucun sens
|
lightSpecular *= texture(MaterialSpecularMap, vTexCoord).rgb; // Utiliser l'alpha de MaterialSpecular n'aurait aucun sens
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -91,7 +91,7 @@ void main()
|
||||||
*/
|
*/
|
||||||
RenderTarget0 = vec4(diffuseColor.rgb, 1.0);
|
RenderTarget0 = vec4(diffuseColor.rgb, 1.0);
|
||||||
RenderTarget1 = vec4(normal*0.5 + 0.5, gl_FragCoord.z);
|
RenderTarget1 = vec4(normal*0.5 + 0.5, gl_FragCoord.z);
|
||||||
RenderTarget2 = vec4(specularColor, (MaterialShininess == 0.0) ? 0.0 : log2(MaterialShininess)/10.5); // http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf
|
RenderTarget2 = vec4(specularColor, (MaterialShininess == 0.0) ? 0.0 : max(log2(MaterialShininess), 0.1)/10.5); // http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf
|
||||||
#else // LIGHTING
|
#else // LIGHTING
|
||||||
RenderTarget0 = vec4(diffuseColor.rgb, 0.0);
|
RenderTarget0 = vec4(diffuseColor.rgb, 0.0);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -129,7 +129,7 @@ void main()
|
||||||
vec3 lightDir = -Lights[i].parameters1.xyz;
|
vec3 lightDir = -Lights[i].parameters1.xyz;
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x * SceneAmbient.rgb;
|
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -154,7 +154,7 @@ void main()
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -179,7 +179,7 @@ void main()
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Modification de l'atténuation pour gérer le spot
|
// Modification de l'atténuation pour gérer le spot
|
||||||
float curAngle = dot(Lights[i].parameters2.xyz, -lightDir);
|
float curAngle = dot(Lights[i].parameters2.xyz, -lightDir);
|
||||||
|
|
@ -217,7 +217,7 @@ void main()
|
||||||
vec3 lightDir = normalize(-Lights[i].parameters1.xyz);
|
vec3 lightDir = normalize(-Lights[i].parameters1.xyz);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x * SceneAmbient.rgb;
|
lightAmbient += Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -235,7 +235,7 @@ void main()
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.x*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Diffuse
|
// Diffuse
|
||||||
float lambert = max(dot(normal, lightDir), 0.0);
|
float lambert = max(dot(normal, lightDir), 0.0);
|
||||||
|
|
@ -253,7 +253,7 @@ void main()
|
||||||
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*lightDirLength, 0.0);
|
float att = max(Lights[i].parameters1.w - Lights[i].parameters2.w*lightDirLength, 0.0);
|
||||||
|
|
||||||
// Ambient
|
// Ambient
|
||||||
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x;
|
lightAmbient += att * Lights[i].color.rgb * Lights[i].factors.x * (MaterialAmbient.rgb + SceneAmbient.rgb);
|
||||||
|
|
||||||
// Modification de l'atténuation pour gérer le spot
|
// Modification de l'atténuation pour gérer le spot
|
||||||
float curAngle = dot(Lights[i].parameters2.xyz, -lightDir);
|
float curAngle = dot(Lights[i].parameters2.xyz, -lightDir);
|
||||||
|
|
@ -273,7 +273,6 @@ void main()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightAmbient *= MaterialAmbient.rgb;
|
|
||||||
lightSpecular *= MaterialSpecular.rgb;
|
lightSpecular *= MaterialSpecular.rgb;
|
||||||
#if SPECULAR_MAPPING
|
#if SPECULAR_MAPPING
|
||||||
lightSpecular *= texture(MaterialSpecularMap, texCoord).rgb; // Utiliser l'alpha de MaterialSpecular n'aurait aucun sens
|
lightSpecular *= texture(MaterialSpecularMap, texCoord).rgb; // Utiliser l'alpha de MaterialSpecular n'aurait aucun sens
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue