X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=gl_rmain.c;h=24c9baa056c896a373b90581408c14f15e44402c;hp=7ba8402302566bb3c1c13a437766c96f1bd44497;hb=105b92bbfd2a623a7bc6f59c4f7110c5b259c9b2;hpb=ef94579586d37fab4d379781c10da8f10648186d diff --git a/gl_rmain.c b/gl_rmain.c index 7ba84023..24c9baa0 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -865,6 +865,16 @@ void R_ShadowVolumeLighting (int visiblevolumes) if (clipmaxs[2] < leaf->maxs[2]) clipmaxs[2] = leaf->maxs[2]; } } + if (clipmins[0] < wl->mins[0]) clipmins[0] = wl->mins[0]; + if (clipmins[1] < wl->mins[1]) clipmins[1] = wl->mins[1]; + if (clipmins[2] < wl->mins[2]) clipmins[2] = wl->mins[2]; + if (clipmaxs[0] > wl->maxs[0]) clipmaxs[0] = wl->maxs[0]; + if (clipmaxs[1] > wl->maxs[1]) clipmaxs[1] = wl->maxs[1]; + if (clipmaxs[2] > wl->maxs[2]) clipmaxs[2] = wl->maxs[2]; + + if (R_Shadow_ScissorForBBoxAndSphere(clipmins, clipmaxs, wl->origin, wl->cullradius)) + continue; + // mark the leafs we care about so only things in those leafs will matter for (i = 0;i < wl->numleafs;i++) wl->leafs[i]->worldnodeframe = shadowframecount; @@ -1046,6 +1056,9 @@ void R_ShadowVolumeLighting (int visiblevolumes) clipmaxs[1] = rd->origin[1] + cullradius; clipmaxs[2] = rd->origin[2] + cullradius; + if (R_Shadow_ScissorForBBoxAndSphere(clipmins, clipmaxs, rd->origin, rd->cullradius)) + continue; + if (!visiblevolumes) R_Shadow_Stage_ShadowVolumes(); R_TestAndDrawShadowVolume(&cl_entities[0].render, rd->origin, cullradius, lightradius, clipmins, clipmaxs); @@ -1102,6 +1115,7 @@ void R_ShadowVolumeLighting (int visiblevolumes) if (!visiblevolumes) R_Shadow_Stage_End(); + qglDisable(GL_SCISSOR_TEST); } static void R_SetFrustum (void)