diff --git a/src/engine/renderer/glsl_source/lightMapping_vp.glsl b/src/engine/renderer/glsl_source/lightMapping_vp.glsl index 125ff94070..0afe4de3cc 100644 --- a/src/engine/renderer/glsl_source/lightMapping_vp.glsl +++ b/src/engine/renderer/glsl_source/lightMapping_vp.glsl @@ -40,10 +40,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA uniform mat3x2 u_TextureMatrix; #endif -#if defined(USE_MODEL_SURFACE) - uniform mat4 u_ModelMatrix; -#endif - +uniform mat4 u_ModelMatrix; uniform mat4 u_ModelViewProjectionMatrix; uniform float u_Time; @@ -84,21 +81,12 @@ void main() // transform vertex position into homogenous clip-space gl_Position = u_ModelViewProjectionMatrix * position; - #if defined(USE_BSP_SURFACE) - // assign vertex Position - var_Position = position.xyz; + // transform position into world space + var_Position = (u_ModelMatrix * position).xyz; - var_Tangent = LB.tangent; - var_Binormal = LB.binormal; - var_Normal = LB.normal; - #else - // transform position into world space - var_Position = (u_ModelMatrix * position).xyz; - - var_Tangent = (u_ModelMatrix * vec4(LB.tangent, 0.0)).xyz; - var_Binormal = (u_ModelMatrix * vec4(LB.binormal, 0.0)).xyz; - var_Normal = (u_ModelMatrix * vec4(LB.normal, 0.0)).xyz; - #endif + var_Tangent = (u_ModelMatrix * vec4(LB.tangent, 0.0)).xyz; + var_Binormal = (u_ModelMatrix * vec4(LB.binormal, 0.0)).xyz; + var_Normal = (u_ModelMatrix * vec4(LB.normal, 0.0)).xyz; #if defined(USE_LIGHT_MAPPING) || defined(USE_DELUXE_MAPPING) var_TexLight = lmCoord; diff --git a/src/engine/renderer/tr_shade.cpp b/src/engine/renderer/tr_shade.cpp index 7d1a1d5c15..3d7ba302a4 100644 --- a/src/engine/renderer/tr_shade.cpp +++ b/src/engine/renderer/tr_shade.cpp @@ -1057,32 +1057,22 @@ void Render_lightMapping( shaderStage_t *pStage ) // end choose right shader program ------------------------------ // now we are ready to set the shader program uniforms - vec3_t viewOrigin; - if ( tess.bspSurface ) + if ( glConfig.vboVertexSkinningAvailable && tess.vboVertexSkinning ) { - VectorCopy( backEnd.orientation.viewOrigin, viewOrigin ); // in world space + gl_lightMappingShader->SetUniform_Bones( tess.numBones, tess.bones ); } - else - { - VectorCopy( backEnd.viewParms.orientation.origin, viewOrigin ); // in world space - if ( glConfig.vboVertexSkinningAvailable && tess.vboVertexSkinning ) - { - gl_lightMappingShader->SetUniform_Bones( tess.numBones, tess.bones ); - } - - // u_VertexInterpolation - if ( tess.vboVertexAnimation ) - { - gl_lightMappingShader->SetUniform_VertexInterpolation( glState.vertexAttribsInterpolation ); - } - - gl_lightMappingShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix ); + // u_VertexInterpolation + if ( tess.vboVertexAnimation ) + { + gl_lightMappingShader->SetUniform_VertexInterpolation( glState.vertexAttribsInterpolation ); } + gl_lightMappingShader->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix ); + // u_ViewOrigin - gl_lightMappingShader->SetUniform_ViewOrigin( viewOrigin ); + gl_lightMappingShader->SetUniform_ViewOrigin( backEnd.viewParms.orientation.origin ); gl_lightMappingShader->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[ glState.stackIndex ] ); diff --git a/src/engine/renderer/tr_world.cpp b/src/engine/renderer/tr_world.cpp index a8bac11e42..a24b58322e 100644 --- a/src/engine/renderer/tr_world.cpp +++ b/src/engine/renderer/tr_world.cpp @@ -194,7 +194,8 @@ void R_AddBSPModelSurfaces( trRefEntity_t *ent ) for ( i = 0; i < bspModel->numSurfaces; i++ ) { - R_AddWorldSurface( bspModel->firstSurface + i, fogNum, -1, FRUSTUM_CLIPALL ); + bspSurface_t *surf = bspModel->firstSurface + i; + R_AddDrawSurf( surf->data, surf->shader, surf->lightmapNum, fogNum, true ); } }