X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=cl_screen.c;h=3e181fbdd2fdfdb1d0f6c8fb4415fdcefd39a405;hb=783ef2a94b005ba18ec5996e5854e93c95b0b8db;hp=e89346a0bc7b70af70e35991bbb98fd210f51f64;hpb=4d7f4863c87e02a4101587d6e3efce96697cf9b9;p=xonotic%2Fdarkplaces.git diff --git a/cl_screen.c b/cl_screen.c index e89346a0..3e181fbd 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -18,7 +18,7 @@ cvar_t scr_showbrand = {0, "showbrand","0"}; cvar_t scr_printspeed = {0, "scr_printspeed","8"}; cvar_t vid_conwidth = {CVAR_SAVE, "vid_conwidth", "640"}; cvar_t vid_conheight = {CVAR_SAVE, "vid_conheight", "480"}; -cvar_t vid_pixelaspect = {CVAR_SAVE, "vid_pixelaspect", "1"}; +cvar_t vid_pixelheight = {CVAR_SAVE, "vid_pixelheight", "1"}; cvar_t scr_screenshot_jpeg = {CVAR_SAVE, "scr_screenshot_jpeg","1"}; cvar_t scr_screenshot_jpeg_quality = {CVAR_SAVE, "scr_screenshot_jpeg_quality","0.9"}; cvar_t scr_screenshot_gamma = {CVAR_SAVE, "scr_screenshot_gamma","2.2"}; @@ -523,7 +523,7 @@ void R_TimeReport_Start(void) speedstringcount = 0; sprintf(r_speeds_string + strlen(r_speeds_string), "org:'%+8.2f %+8.2f %+8.2f' dir:'%+2.3f %+2.3f %+2.3f'\n", r_vieworigin[0], r_vieworigin[1], r_vieworigin[2], r_viewforward[0], r_viewforward[1], r_viewforward[2]); sprintf(r_speeds_string + strlen(r_speeds_string), "%5i entities%6i surfaces%6i triangles%5i leafs%5i portals%6i particles\n", renderstats.entities, renderstats.entities_surfaces, renderstats.entities_triangles, renderstats.world_leafs, renderstats.world_portals, renderstats.particles); - sprintf(r_speeds_string + strlen(r_speeds_string), "%4i lights%4i clears%4i scissored%7i light%7i shadow%i7 dynamic\n", renderstats.lights, renderstats.lights_clears, renderstats.lights_scissored, renderstats.lights_lighttriangles, renderstats.lights_shadowtriangles, renderstats.lights_dynamicshadowtriangles); + sprintf(r_speeds_string + strlen(r_speeds_string), "%4i lights%4i clears%4i scissored%7i light%7i shadow%7i dynamic\n", renderstats.lights, renderstats.lights_clears, renderstats.lights_scissored, renderstats.lights_lighttriangles, renderstats.lights_shadowtriangles, renderstats.lights_dynamicshadowtriangles); if (renderstats.bloom) sprintf(r_speeds_string + strlen(r_speeds_string), "rendered%6i meshes%8i triangles bloompixels%8i copied%8i drawn\n", renderstats.meshes, renderstats.meshes_elements / 3, renderstats.bloom_copypixels, renderstats.bloom_drawpixels); else @@ -605,7 +605,7 @@ void CL_Screen_Init(void) Cvar_RegisterVariable (&scr_printspeed); Cvar_RegisterVariable (&vid_conwidth); Cvar_RegisterVariable (&vid_conheight); - Cvar_RegisterVariable (&vid_pixelaspect); + Cvar_RegisterVariable (&vid_pixelheight); Cvar_RegisterVariable (&scr_screenshot_jpeg); Cvar_RegisterVariable (&scr_screenshot_jpeg_quality); Cvar_RegisterVariable (&scr_screenshot_gamma); @@ -758,6 +758,86 @@ void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) r_refdef.drawqueuesize += dq->size; } +void DrawQ_Lines (drawqueuemesh_t *mesh, int flags) +{ + int size; + void *p; + drawqueue_t *dq; + drawqueuemesh_t *m; + size = sizeof(*dq); + size += sizeof(drawqueuemesh_t); + size += sizeof(int[3]) * mesh->num_triangles; + size += sizeof(float[3]) * mesh->num_vertices; + size += sizeof(float[2]) * mesh->num_vertices; + size += sizeof(float[4]) * mesh->num_vertices; + if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize) + return; + dq = (void *)(r_refdef.drawqueue + r_refdef.drawqueuesize); + dq->size = size; + dq->command = DRAWQUEUE_LINES; + dq->flags = flags; + dq->color = 0; + dq->x = 0; + dq->y = 0; + dq->scalex = 0; + dq->scaley = 0; + p = (void *)(dq + 1); + m = p;p = (unsigned char*)p + sizeof(drawqueuemesh_t); + m->num_triangles = mesh->num_triangles; + m->num_vertices = mesh->num_vertices; + m->texture = mesh->texture; + m->data_element3i = p;memcpy(m->data_element3i , mesh->data_element3i , m->num_triangles * sizeof(int[3]));p = (unsigned char*)p + m->num_triangles * sizeof(int[3]); + m->data_vertex3f = p;memcpy(m->data_vertex3f , mesh->data_vertex3f , m->num_vertices * sizeof(float[3]));p = (unsigned char*)p + m->num_vertices * sizeof(float[3]); + m->data_texcoord2f = p;memcpy(m->data_texcoord2f, mesh->data_texcoord2f, m->num_vertices * sizeof(float[2]));p = (unsigned char*)p + m->num_vertices * sizeof(float[2]); + m->data_color4f = p;memcpy(m->data_color4f , mesh->data_color4f , m->num_vertices * sizeof(float[4]));p = (unsigned char*)p + m->num_vertices * sizeof(float[4]); + r_refdef.drawqueuesize += dq->size; +} + +//LordHavoc: FIXME: this is nasty! +void DrawQ_LineWidth (float width) +{ + drawqueue_t *dq; + static int linewidth = 1; + if(width == linewidth) + return; + linewidth = width; + if(r_refdef.drawqueuesize + (int)sizeof(*dq) > r_refdef.maxdrawqueuesize) + { + Con_DPrint("DrawQueue full !\n"); + return; + } + dq = (void*) (r_refdef.drawqueue + r_refdef.drawqueuesize); + dq->size = sizeof(*dq); + dq->command = DRAWQUEUE_LINEWIDTH; + dq->x = width; + + r_refdef.drawqueuesize += dq->size; +} + +//[515]: this is old, delete +void DrawQ_Line (float width, float x1, float y1, float x2, float y2, float r, float g, float b, float alpha, int flags) +{ + drawqueue_t *dq; + if(width > 0) + DrawQ_LineWidth(width); + if(r_refdef.drawqueuesize + (int)sizeof(*dq) > r_refdef.maxdrawqueuesize) + { + Con_DPrint("DrawQueue full !\n"); + return; + } + dq = (void*) (r_refdef.drawqueue + r_refdef.drawqueuesize); + dq->size = sizeof(*dq); + dq->command = DRAWQUEUE_LINES; + dq->x = x1; + dq->y = y1; + dq->scalex = x2; + dq->scaley = y2; + dq->flags = flags; + dq->color = ((unsigned int) (r * 255.0f) << 24) | ((unsigned int) (g * 255.0f) << 16) | ((unsigned int) (b * 255.0f) << 8) | ((unsigned int) (alpha * 255.0f)); + + r_refdef.drawqueuesize += dq->size; +} + void DrawQ_SetClipArea(float x, float y, float width, float height) { drawqueue_t * dq; @@ -1232,8 +1312,8 @@ static void R_Envmap_f (void) r_refdef.width = size; r_refdef.height = size; - r_refdef.fov_x = 90; - r_refdef.fov_y = 90; + r_refdef.frustum_x = tan(90 * M_PI / 360.0); + r_refdef.frustum_y = tan(90 * M_PI / 360.0); buffer1 = (unsigned char *)Mem_Alloc(tempmempool, size * size * 3); buffer2 = (unsigned char *)Mem_Alloc(tempmempool, size * size * 3);