From fd582485c37f257158589cc12d842719157e5eaf Mon Sep 17 00:00:00 2001 From: divverent Date: Thu, 14 May 2009 08:34:39 +0000 Subject: [PATCH] r_speeds: show current clusterindex r_drawportals: draw cluster portals with more alpha than non-cluster portals (needs better visualization still) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8958 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_screen.c | 6 ++++-- gl_rsurf.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/cl_screen.c b/cl_screen.c index 12426fd8..d2f2b0ed 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -743,6 +743,7 @@ void R_TimeReport_EndFrame(void) int i, j, lines, y; cl_locnode_t *loc; char string[1024+4096]; + mleaf_t *viewleaf; string[0] = 0; if (r_speeds.integer && cls.signon == SIGNONS && cls.state == ca_connected) @@ -750,12 +751,13 @@ void R_TimeReport_EndFrame(void) // put the location name in the r_speeds display as it greatly helps // when creating loc files loc = CL_Locs_FindNearest(cl.movement_origin); + viewleaf = (r_refdef.scene.worldmodel && r_refdef.scene.worldmodel->brush.PointInLeaf) ? r_refdef.scene.worldmodel->brush.PointInLeaf(r_refdef.scene.worldmodel, r_refdef.view.origin) : NULL; dpsnprintf(string, sizeof(string), "%s%s\n" "%3i renders org:'%+8.2f %+8.2f %+8.2f' dir:'%+2.3f %+2.3f %+2.3f'\n" "%7i surfaces%7i triangles %5i entities (%7i surfaces%7i triangles)\n" "%5i leafs%5i portals%6i/%6i particles%6i/%6i decals %3i%% quality\n" -"%7i lightmap updates (%7i pixels)\n" +"%7i lightmap updates (%7i pixels)%s\n" "%4i lights%4i clears%4i scissored%7i light%7i shadow%7i dynamic\n" "rendered%6i meshes%8i triangles bloompixels%8i copied%8i drawn\n" "%s" @@ -763,7 +765,7 @@ void R_TimeReport_EndFrame(void) , r_refdef.stats.renders, r_refdef.view.origin[0], r_refdef.view.origin[1], r_refdef.view.origin[2], r_refdef.view.forward[0], r_refdef.view.forward[1], r_refdef.view.forward[2] , r_refdef.stats.world_surfaces, r_refdef.stats.world_triangles, r_refdef.stats.entities, r_refdef.stats.entities_surfaces, r_refdef.stats.entities_triangles , r_refdef.stats.world_leafs, r_refdef.stats.world_portals, r_refdef.stats.particles, cl.num_particles, r_refdef.stats.decals, cl.num_decals, (int)(100 * r_refdef.view.quality) -, r_refdef.stats.lightmapupdates, r_refdef.stats.lightmapupdatepixels +, r_refdef.stats.lightmapupdates, r_refdef.stats.lightmapupdatepixels, viewleaf ? va(" clusterindex%6i", viewleaf->clusterindex) : "" , r_refdef.stats.lights, r_refdef.stats.lights_clears, r_refdef.stats.lights_scissored, r_refdef.stats.lights_lighttriangles, r_refdef.stats.lights_shadowtriangles, r_refdef.stats.lights_dynamicshadowtriangles , r_refdef.stats.meshes, r_refdef.stats.meshes_elements / 3, r_refdef.stats.bloom_copypixels, r_refdef.stats.bloom_drawpixels , r_speeds_timestring); diff --git a/gl_rsurf.c b/gl_rsurf.c index 7d68daed..74ce706f 100644 --- a/gl_rsurf.c +++ b/gl_rsurf.c @@ -335,6 +335,7 @@ static void R_DrawPortal_Callback(const entity_render_t *ent, const rtlight_t *r // called with a batch, so numsurfaces is always 1, and the surfacelist // contains only a leaf number for coloring purposes const mportal_t *portal = (mportal_t *)ent; + qboolean isvis; int i, numpoints; float *v; float vertex3f[POLYGONELEMENTS_MAXPOINTS*3]; @@ -354,11 +355,13 @@ static void R_DrawPortal_Callback(const entity_render_t *ent, const rtlight_t *r R_Mesh_ResetTextureState(); R_SetupGenericShader(false); - i = surfacelist[0]; + isvis = (portal->here->clusterindex >= 0 && portal->past->clusterindex >= 0 && portal->here->clusterindex != portal->past->clusterindex); + + i = surfacelist[0] >> 1; GL_Color(((i & 0x0007) >> 0) * (1.0f / 7.0f) * r_refdef.view.colorscale, ((i & 0x0038) >> 3) * (1.0f / 7.0f) * r_refdef.view.colorscale, ((i & 0x01C0) >> 6) * (1.0f / 7.0f) * r_refdef.view.colorscale, - 0.125f); + isvis ? 0.125f : 0.03125f); for (i = 0, v = vertex3f;i < numpoints;i++, v += 3) VectorCopy(portal->points[i].position, v); R_Mesh_Draw(0, numpoints, 0, numpoints - 2, NULL, polygonelements, 0, 0); -- 2.39.2