diff --git a/code/nel/src/3d/driver/OpenGL3/driver_glsl_shader_generator.cpp b/code/nel/src/3d/driver/OpenGL3/driver_glsl_shader_generator.cpp index 1d855005f..0ce7a5e07 100644 --- a/code/nel/src/3d/driver/OpenGL3/driver_glsl_shader_generator.cpp +++ b/code/nel/src/3d/driver/OpenGL3/driver_glsl_shader_generator.cpp @@ -601,10 +601,29 @@ namespace NL3D ss << "uniform mat4 mvMatrix;" << std::endl; ss << "uniform mat4 texMatrix0;" << std::endl; ss << "smooth out vec3 cubeTexCoords;" << std::endl; + + if( desc->fogEnabled() || desc->hasPointLight() ) + { + ss << "vec4 ecPos4;" << std::endl; + } + if( desc->fogEnabled() ) ss << "smooth out vec4 ecPos;" << std::endl; ss << std::endl; + if( desc->lightingEnabled() ) + { + addNormalMatrix(); + addLightUniformsVS(); + addLightOutsVS(); + ss << std::endl; + + addNormalFromMVFunction(); + + addLightsFunctionVS(); + ss << std::endl; + } + ss << "vec3 ReflectionMap( const in vec3 eyePos, const in vec3 normal )" << std::endl; ss << "{" << std::endl; ss << "vec3 u = normalize( eyePos );" << std::endl; @@ -615,6 +634,12 @@ namespace NL3D ss << "void main( void )" << std::endl; ss << "{" << std::endl; ss << "vec4 eyePosition = mvMatrix * v" << attribNames[ 0 ] << ";" << std::endl; + + if( desc->lightingEnabled() ) + ss << "calcNMFromMV();" << std::endl; + + if( desc->hasPointLight() ) + ss << "ecPos4 = eyePosition;" << std::endl; if( desc->fogEnabled() ) ss << "ecPos = eyePosition;" << std::endl; @@ -627,6 +652,9 @@ namespace NL3D ss << "cubeTexCoords = t.xyz;" << std::endl; ss << "gl_Position = mvpMatrix * v" << attribNames[ 0 ] << ";" << std::endl; + if( desc->lightingEnabled() ) + addLightsVS(); + for( int i = Weight; i < NumOffsets; i++ ) { if( hasFlag( vbFormat, vertexFlags[ i ] ) ) @@ -1282,9 +1310,18 @@ namespace NL3D ss << "uniform samplerCube sampler1;" << std::endl; addDiffuse(); addAlphaTreshold(); - addFogUniform(); + if( desc->lightingEnabled() ) + { + addLightUniformsFS(); + addLightInsFS(); + ss << std::endl; + + addLightsFunctionFS(); + ss << std::endl; + } + if( desc->fogEnabled() ) ss << "smooth in vec4 ecPos;" << std::endl; @@ -1303,6 +1340,9 @@ namespace NL3D ss << "texel.rgb = texel1.rgb * texel.a + texel.rgb;" << std::endl; ss << "texel.a = texel1.a;" << std::endl; ss << "fragColor = texel;" << std::endl; + + if( desc->lightingEnabled() ) + addLightsFS(); if( desc->fogEnabled() ) addFog();