X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=r_shadow.c;h=9417854f8e4a8660980876c5a57722eaeae73d97;hp=fce433789a3b97940c52951371605a53ab22e47b;hb=f2033ea3754b3531a570ec7d407f154415047db5;hpb=69a9f6bb4ea7d2a62b22238da58fe99d0ebd41d8 diff --git a/r_shadow.c b/r_shadow.c index fce43378..9417854f 100644 --- a/r_shadow.c +++ b/r_shadow.c @@ -876,15 +876,7 @@ void R_Shadow_RenderMode_StencilShadowVolumes(void) GL_BlendFunc(GL_ONE, GL_ZERO); GL_DepthMask(false); GL_DepthTest(true); - if (!r_showtrispass) - qglPolygonOffset(r_shadow_shadow_polygonfactor.value, r_shadow_shadow_polygonoffset.value); - //if (r_shadow_shadow_polygonoffset.value != 0) - //{ - // qglPolygonOffset(r_shadow_shadow_polygonfactor.value, r_shadow_shadow_polygonoffset.value); - // qglEnable(GL_POLYGON_OFFSET_FILL); - //} - //else - // qglDisable(GL_POLYGON_OFFSET_FILL); + qglPolygonOffset(r_shadowpolygonfactor, r_shadowpolygonoffset); qglDepthFunc(GL_LESS); qglCullFace(GL_FRONT); // quake is backwards, this culls back faces qglEnable(GL_STENCIL_TEST); @@ -915,11 +907,10 @@ void R_Shadow_RenderMode_StencilShadowVolumes(void) void R_Shadow_RenderMode_Lighting(qboolean stenciltest, qboolean transparent) { R_Shadow_RenderMode_Reset(); - GL_BlendFunc(GL_ONE, GL_ONE); + GL_BlendFunc(GL_SRC_ALPHA, GL_ONE); GL_DepthMask(false); GL_DepthTest(true); - if (!r_showtrispass) - qglPolygonOffset(0, 0); + qglPolygonOffset(r_polygonfactor, r_polygonoffset); //qglDisable(GL_POLYGON_OFFSET_FILL); GL_Color(1, 1, 1, 1); GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1); @@ -950,7 +941,7 @@ void R_Shadow_RenderMode_Lighting(qboolean stenciltest, qboolean transparent) R_Mesh_TexBind(5, R_GetTexture(r_texture_white)); // pants R_Mesh_TexBind(6, R_GetTexture(r_texture_white)); // shirt //R_Mesh_TexMatrix(3, r_shadow_entitytolight); // light filter matrix - GL_BlendFunc(GL_ONE, GL_ONE); + GL_BlendFunc(GL_SRC_ALPHA, GL_ONE); GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 0); CHECKGLERROR } @@ -962,8 +953,7 @@ void R_Shadow_RenderMode_VisibleShadowVolumes(void) GL_BlendFunc(GL_ONE, GL_ONE); GL_DepthMask(false); GL_DepthTest(!r_showdisabledepthtest.integer); - if (!r_showtrispass) - qglPolygonOffset(0, 0); + qglPolygonOffset(r_polygonfactor, r_polygonoffset); GL_Color(0.0, 0.0125, 0.1, 1); GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1); qglDepthFunc(GL_GEQUAL); @@ -979,8 +969,7 @@ void R_Shadow_RenderMode_VisibleLighting(qboolean stenciltest, qboolean transpar GL_BlendFunc(GL_ONE, GL_ONE); GL_DepthMask(false); GL_DepthTest(!r_showdisabledepthtest.integer); - if (!r_showtrispass) - qglPolygonOffset(0, 0); + qglPolygonOffset(r_polygonfactor, r_polygonoffset); GL_Color(0.1, 0.0125, 0, 1); GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1); if (transparent) @@ -1003,8 +992,7 @@ void R_Shadow_RenderMode_End(void) GL_BlendFunc(GL_ONE, GL_ZERO); GL_DepthMask(true); GL_DepthTest(true); - if (!r_showtrispass) - qglPolygonOffset(0, 0); + qglPolygonOffset(r_polygonfactor, r_polygonoffset); //qglDisable(GL_POLYGON_OFFSET_FILL); GL_Color(1, 1, 1, 1); GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1); @@ -2174,7 +2162,8 @@ void R_RTLight_Compile(rtlight_t *rtlight) } } - Con_DPrintf("static light built: %f %f %f : %f %f %f box, %i shadow volume triangles (in %i meshes)\n", rtlight->cullmins[0], rtlight->cullmins[1], rtlight->cullmins[2], rtlight->cullmaxs[0], rtlight->cullmaxs[1], rtlight->cullmaxs[2], shadowtris, shadowmeshes); + if (developer.integer >= 10) + Con_Printf("static light built: %f %f %f : %f %f %f box, %i shadow volume triangles (in %i meshes)\n", rtlight->cullmins[0], rtlight->cullmins[1], rtlight->cullmins[2], rtlight->cullmaxs[0], rtlight->cullmaxs[1], rtlight->cullmaxs[2], shadowtris, shadowmeshes); } void R_RTLight_Uncompile(rtlight_t *rtlight) @@ -2267,6 +2256,8 @@ void R_Shadow_SetupEntityLight(const entity_render_t *ent) void R_Shadow_DrawEntityLight(entity_render_t *ent, int numsurfaces, int *surfacelist) { + if (!ent->model->DrawLight) + return; R_Shadow_SetupEntityLight(ent); if (ent == r_refdef.worldentity) ent->model->DrawLight(ent, numsurfaces, surfacelist);