X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=gl_rsurf.c;h=723e9fb4ce3ee2028ffcc20b6924f1e02955dedd;hp=512b94919a0b975848bcc8c2f51676578c340463;hb=c9c011dcf7b2ee062e9493139b89fff99f63ea25;hpb=8b26f70d09928dacff04bd9d77fa5bfbe204b50a diff --git a/gl_rsurf.c b/gl_rsurf.c index 512b9491..723e9fb4 100644 --- a/gl_rsurf.c +++ b/gl_rsurf.c @@ -394,7 +394,7 @@ void R_DrawPortals(void) for (portal = model->brush.data_leafs[leafnum].portals;portal;portal = portal->next) { if (portal->numpoints <= POLYGONELEMENTS_MAXPOINTS) - if (!R_CullBox(portal->mins, portal->maxs)) + if (!R_CullFrustum(portal->mins, portal->maxs)) { VectorClear(center); for (i = 0;i < portal->numpoints;i++) @@ -411,8 +411,6 @@ void R_DrawPortals(void) static void R_View_WorldVisibility_CullSurfaces(void) { int surfaceindex; - int surfaceindexstart; - int surfaceindexend; unsigned char *surfacevisible; msurface_t *surfaces; model_t *model = r_refdef.scene.worldmodel; @@ -422,15 +420,13 @@ static void R_View_WorldVisibility_CullSurfaces(void) return; if (r_usesurfaceculling.integer < 1) return; - surfaceindexstart = model->firstmodelsurface; - surfaceindexend = surfaceindexstart + model->nummodelsurfaces; surfaces = model->data_surfaces; surfacevisible = r_refdef.viewcache.world_surfacevisible; - for (surfaceindex = surfaceindexstart; surfaceindex < surfaceindexend; surfaceindex++) + for (surfaceindex = model->submodelsurfaces_start; surfaceindex < model->submodelsurfaces_end; surfaceindex++) { if (surfacevisible[surfaceindex]) { - if (R_CullBox(surfaces[surfaceindex].mins, surfaces[surfaceindex].maxs) + if (R_CullFrustum(surfaces[surfaceindex].mins, surfaces[surfaceindex].maxs) || (r_vis_trace_surfaces.integer && !R_CanSeeBox(r_vis_trace_samples.integer, r_vis_trace_eyejitter.value, r_vis_trace_enlarge.value, r_vis_trace_expand.value, r_vis_trace_pad.value, r_refdef.view.origin, surfaces[surfaceindex].mins, surfaces[surfaceindex].maxs))) surfacevisible[surfaceindex] = 0; } @@ -463,7 +459,7 @@ void R_View_WorldVisibility(qbool forcenovis) for (j = 0, leaf = model->brush.data_leafs;j < model->brush.num_leafs;j++, leaf++) { // if leaf is in current pvs and on the screen, mark its surfaces - if (CHECKPVSBIT(r_refdef.viewcache.world_pvsbits, leaf->clusterindex) && !R_CullBox(leaf->mins, leaf->maxs)) + if (CHECKPVSBIT(r_refdef.viewcache.world_pvsbits, leaf->clusterindex) && !R_CullFrustum(leaf->mins, leaf->maxs)) { r_refdef.stats[r_stat_world_leafs]++; r_refdef.viewcache.world_leafvisible[j] = true; @@ -494,7 +490,7 @@ void R_View_WorldVisibility(qbool forcenovis) if (leaf->clusterindex < 0) continue; // if leaf is in current pvs and on the screen, mark its surfaces - if (!R_CullBox(leaf->mins, leaf->maxs)) + if (!R_CullFrustum(leaf->mins, leaf->maxs)) { r_refdef.stats[r_stat_world_leafs]++; r_refdef.viewcache.world_leafvisible[j] = true; @@ -517,7 +513,7 @@ void R_View_WorldVisibility(qbool forcenovis) if (leaf->clusterindex < 0) continue; // if leaf is in current pvs and on the screen, mark its surfaces - if (CHECKPVSBIT(r_refdef.viewcache.world_pvsbits, leaf->clusterindex) && !R_CullBox(leaf->mins, leaf->maxs)) + if (CHECKPVSBIT(r_refdef.viewcache.world_pvsbits, leaf->clusterindex) && !R_CullFrustum(leaf->mins, leaf->maxs)) { r_refdef.stats[r_stat_world_leafs]++; r_refdef.viewcache.world_leafvisible[j] = true; @@ -576,7 +572,7 @@ void R_View_WorldVisibility(qbool forcenovis) cullmaxs[0] = p->maxs[0] + cullbias; cullmaxs[1] = p->maxs[1] + cullbias; cullmaxs[2] = p->maxs[2] + cullbias; - if (R_CullBox(cullmins, cullmaxs)) + if (R_CullFrustum(cullmins, cullmaxs)) continue; if (r_vis_trace.integer) { @@ -606,7 +602,7 @@ void R_Mod_DrawSky(entity_render_t *ent) void R_Mod_DrawAddWaterPlanes(entity_render_t *ent) { - int i, j, n, flagsmask; + int i, n, flagsmask; model_t *model = ent->model; msurface_t *surfaces; if (model == NULL) @@ -620,13 +616,10 @@ void R_Mod_DrawAddWaterPlanes(entity_render_t *ent) // add visible surfaces to draw list if (ent == r_refdef.scene.worldentity) { - for (i = 0;i < model->nummodelsurfaces;i++) - { - j = model->sortedmodelsurfaces[i]; - if (r_refdef.viewcache.world_surfacevisible[j]) - if (surfaces[j].texture->basematerialflags & flagsmask) - R_Water_AddWaterPlane(surfaces + j, 0); - } + for (i = model->submodelsurfaces_start;i < model->submodelsurfaces_end;i++) + if (r_refdef.viewcache.world_surfacevisible[i]) + if (surfaces[i].texture->basematerialflags & flagsmask) + R_Water_AddWaterPlane(surfaces + i, 0); } else { @@ -634,12 +627,9 @@ void R_Mod_DrawAddWaterPlanes(entity_render_t *ent) n = ent->entitynumber; else n = 0; - for (i = 0;i < model->nummodelsurfaces;i++) - { - j = model->sortedmodelsurfaces[i]; - if (surfaces[j].texture->basematerialflags & flagsmask) - R_Water_AddWaterPlane(surfaces + j, n); - } + for (i = model->submodelsurfaces_start;i < model->submodelsurfaces_end;i++) + if (surfaces[i].texture->basematerialflags & flagsmask) + R_Water_AddWaterPlane(surfaces + i, n); } rsurface.entity = NULL; // used only by R_GetCurrentTexture and RSurf_ActiveModelEntity } @@ -762,7 +752,7 @@ static void R_Q1BSP_RecursiveGetLightInfo_BSP(r_q1bsp_getlightinfo_t *info, qboo continue; #endif #if 0 - if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(node->mins, node->maxs, rtlight->cached_numfrustumplanes, rtlight->cached_frustumplanes)) + if (!r_shadow_compilingrtlight && R_CullBox(node->mins, node->maxs, rtlight->cached_numfrustumplanes, rtlight->cached_frustumplanes)) continue; #endif // axial planes can be processed much more quickly @@ -835,7 +825,7 @@ static void R_Q1BSP_RecursiveGetLightInfo_BSP(r_q1bsp_getlightinfo_t *info, qboo continue; #endif #if 1 - if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(leaf->mins, leaf->maxs, info->numfrustumplanes, info->frustumplanes)) + if (!r_shadow_compilingrtlight && R_CullBox(leaf->mins, leaf->maxs, info->numfrustumplanes, info->frustumplanes)) continue; #endif @@ -1019,7 +1009,7 @@ static void R_Q1BSP_RecursiveGetLightInfo_BIH(r_q1bsp_getlightinfo_t *info, cons continue; #endif #if 1 - if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(leaf->mins, leaf->maxs, info->numfrustumplanes, info->frustumplanes)) + if (!r_shadow_compilingrtlight && R_CullBox(leaf->mins, leaf->maxs, info->numfrustumplanes, info->frustumplanes)) continue; #endif surfaceindex = leaf->surfaceindex; @@ -1086,7 +1076,7 @@ static void R_Q1BSP_RecursiveGetLightInfo_BIH(r_q1bsp_getlightinfo_t *info, cons continue; #endif #if 0 - if (!r_shadow_compilingrtlight && R_CullBoxCustomPlanes(node->mins, node->maxs, rtlight->cached_numfrustumplanes, rtlight->cached_frustumplanes)) + if (!r_shadow_compilingrtlight && R_CullBox(node->mins, node->maxs, rtlight->cached_numfrustumplanes, rtlight->cached_frustumplanes)) continue; #endif if (info->lightmins[axis] <= node->backmax) @@ -1140,7 +1130,7 @@ static void R_Q1BSP_CallRecursiveGetLightInfo(r_q1bsp_getlightinfo_t *info, qboo info->outnumleafs = 0; info->outnumsurfaces = 0; memset(info->outleafpvs, 0, (info->model->brush.num_leafs + 7) >> 3); - memset(info->outsurfacepvs, 0, (info->model->nummodelsurfaces + 7) >> 3); + memset(info->outsurfacepvs, 0, (info->model->num_surfaces + 7) >> 3); memset(info->outshadowtrispvs, 0, (info->model->surfmesh.num_triangles + 7) >> 3); memset(info->outlighttrispvs, 0, (info->model->surfmesh.num_triangles + 7) >> 3); } @@ -1246,7 +1236,7 @@ void R_Mod_GetLightInfo(entity_render_t *ent, vec3_t relativelightorigin, float VectorCopy(info.relativelightorigin, info.outmaxs); memset(visitingleafpvs, 0, (info.model->brush.num_leafs + 7) >> 3); memset(outleafpvs, 0, (info.model->brush.num_leafs + 7) >> 3); - memset(outsurfacepvs, 0, (info.model->nummodelsurfaces + 7) >> 3); + memset(outsurfacepvs, 0, (info.model->num_surfaces + 7) >> 3); memset(outshadowtrispvs, 0, (info.model->surfmesh.num_triangles + 7) >> 3); memset(outlighttrispvs, 0, (info.model->surfmesh.num_triangles + 7) >> 3); if (info.model->brush.GetPVS && !info.noocclusion)