X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=cl_screen.c;h=36eccda64f572647d72b226c2a161164a218695d;hb=975788b612fe4484d9aa8848d3eb762b26d7989d;hp=afdeab609613c5f399d074c6af38b74e017afe58;hpb=c045878e6948f00e52f17c9df6beefa2dfdfd868;p=xonotic%2Fdarkplaces.git diff --git a/cl_screen.c b/cl_screen.c index afdeab60..36eccda6 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -793,9 +793,6 @@ const char *r_stat_name[r_stat_count] = "bufferdatasize_index16", "bufferdatasize_index32", "bufferdatasize_uniform", - "animcache_vertexmesh_count", - "animcache_vertexmesh_vertices", - "animcache_vertexmesh_maxvertices", "animcache_skeletal_count", "animcache_skeletal_bones", "animcache_skeletal_maxbones", @@ -874,10 +871,6 @@ const char *r_stat_name[r_stat_count] = "dynamic_surfaces_because_tcmod_turbulent", "dynamic_vertices_because_tcmod_turbulent", "dynamic_triangles_because_tcmod_turbulent", - "dynamic_batches_because_interleavedarrays", - "dynamic_surfaces_because_interleavedarrays", - "dynamic_vertices_because_interleavedarrays", - "dynamic_triangles_because_interleavedarrays", "dynamic_batches_because_nogaps", "dynamic_surfaces_because_nogaps", "dynamic_vertices_because_nogaps", @@ -2058,11 +2051,8 @@ void R_ClearScreen(qboolean fogcolor) VectorCopy(r_refdef.fogcolor, clearcolor); } // clear depth is 1.0 - // LordHavoc: we use a stencil centered around 128 instead of 0, - // to avoid clamping interfering with strange shadow volume - // drawing orders // clear the screen - GL_Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | (vid.stencil ? GL_STENCIL_BUFFER_BIT : 0), clearcolor, 1.0f, 128); + GL_Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | (vid.stencil ? GL_STENCIL_BUFFER_BIT : 0), clearcolor, 1.0f, 0); } int r_stereo_side; @@ -2077,6 +2067,10 @@ static void SCR_DrawScreen (void) R_UpdateVariables(); + // this will be set back to 0 by R_RenderView during CL_VM_UpdateView + r_refdef.draw2dstage = 1; + R_ResetViewRendering2D_Common(0, NULL, NULL, 0, 0, vid.width, vid.height, vid_conwidth.integer, vid_conheight.integer); + // Quake uses clockwise winding, so these are swapped r_refdef.view.cullface_front = GL_BACK; r_refdef.view.cullface_back = GL_FRONT; @@ -2131,33 +2125,21 @@ static void SCR_DrawScreen (void) r_refdef.view.z = 0; } - if (v_isometric.integer) - { - r_refdef.view.useperspective = false; - r_refdef.view.frustum_y = v_isometric_verticalfov.value * cl.viewzoom; - r_refdef.view.frustum_x = r_refdef.view.frustum_y * (float)r_refdef.view.width / (float)r_refdef.view.height / vid_pixelheight.value; - r_refdef.view.frustum_x *= r_refdef.frustumscale_x; - r_refdef.view.frustum_y *= r_refdef.frustumscale_y; - r_refdef.view.ortho_x = r_refdef.view.frustum_x; // used by VM_CL_R_SetView - r_refdef.view.ortho_y = r_refdef.view.frustum_y; // used by VM_CL_R_SetView - } - else - { - // LordHavoc: viewzoom (zoom in for sniper rifles, etc) - // LordHavoc: this is designed to produce widescreen fov values - // when the screen is wider than 4/3 width/height aspect, to do - // this it simply assumes the requested fov is the vertical fov - // for a 4x3 display, if the ratio is not 4x3 this makes the fov - // higher/lower according to the ratio - r_refdef.view.useperspective = true; - r_refdef.view.frustum_y = tan(scr_fov.value * M_PI / 360.0) * (3.0 / 4.0) * cl.viewzoom; - r_refdef.view.frustum_x = r_refdef.view.frustum_y * (float)r_refdef.view.width / (float)r_refdef.view.height / vid_pixelheight.value; - - r_refdef.view.frustum_x *= r_refdef.frustumscale_x; - r_refdef.view.frustum_y *= r_refdef.frustumscale_y; - r_refdef.view.ortho_x = atan(r_refdef.view.frustum_x) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView - r_refdef.view.ortho_y = atan(r_refdef.view.frustum_y) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView - } + // LordHavoc: viewzoom (zoom in for sniper rifles, etc) + // LordHavoc: this is designed to produce widescreen fov values + // when the screen is wider than 4/3 width/height aspect, to do + // this it simply assumes the requested fov is the vertical fov + // for a 4x3 display, if the ratio is not 4x3 this makes the fov + // higher/lower according to the ratio + r_refdef.view.useperspective = true; + r_refdef.view.frustum_y = tan(scr_fov.value * M_PI / 360.0) * (3.0 / 4.0) * cl.viewzoom; + r_refdef.view.frustum_x = r_refdef.view.frustum_y * (float)r_refdef.view.width / (float)r_refdef.view.height / vid_pixelheight.value; + + r_refdef.view.frustum_x *= r_refdef.frustumscale_x; + r_refdef.view.frustum_y *= r_refdef.frustumscale_y; + r_refdef.view.ortho_x = atan(r_refdef.view.frustum_x) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView + r_refdef.view.ortho_y = atan(r_refdef.view.frustum_y) * (360.0 / M_PI); // abused as angle by VM_CL_R_SetView + r_refdef.view.ismain = true; // if CSQC is loaded, it is required to provide the CSQC_UpdateView function, @@ -2291,17 +2273,8 @@ static void SCR_SetLoadingScreenTexture(void) SCR_ClearLoadingScreenTexture(); - if (vid.support.arb_texture_non_power_of_two) - { - w = vid.width; h = vid.height; - loadingscreentexture_w = loadingscreentexture_h = 1; - } - else - { - w = CeilPowerOf2(vid.width); h = CeilPowerOf2(vid.height); - loadingscreentexture_w = vid.width / (float) w; - loadingscreentexture_h = vid.height / (float) h; - } + w = vid.width; h = vid.height; + loadingscreentexture_w = loadingscreentexture_h = 1; loadingscreentexture = R_LoadTexture2D(r_main_texturepool, "loadingscreentexture", w, h, NULL, TEXTYPE_COLORBUFFER, TEXF_RENDERTARGET | TEXF_FORCENEAREST | TEXF_CLAMP, -1, NULL); R_Mesh_CopyToTexture(loadingscreentexture, 0, 0, 0, 0, vid.width, vid.height); @@ -2542,11 +2515,11 @@ static void SCR_DrawLoadingScreen (qboolean clear) if(loadingscreentexture) { R_Mesh_PrepareVertices_Generic_Arrays(4, loadingscreentexture_vertex3f, NULL, loadingscreentexture_texcoord2f); - R_SetupShader_Generic(loadingscreentexture, NULL, GL_MODULATE, 1, false, true, true); + R_SetupShader_Generic(loadingscreentexture, false, true, true); R_Mesh_Draw(0, 4, 0, 2, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0); } R_Mesh_PrepareVertices_Generic_Arrays(4, loadingscreenpic_vertex3f, NULL, loadingscreenpic_texcoord2f); - R_SetupShader_Generic(Draw_GetPicTexture(loadingscreenpic), NULL, GL_MODULATE, 1, true, true, false); + R_SetupShader_Generic(Draw_GetPicTexture(loadingscreenpic), true, true, false); R_Mesh_Draw(0, 4, 0, 2, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0); SCR_DrawLoadingStack(); } @@ -2819,15 +2792,6 @@ void CL_UpdateScreen(void) { CHECKGLERROR qglDrawBuffer(GL_BACK);CHECKGLERROR - // set dithering mode - if (gl_dither.integer) - { - qglEnable(GL_DITHER);CHECKGLERROR - } - else - { - qglDisable(GL_DITHER);CHECKGLERROR - } } #endif @@ -2845,34 +2809,11 @@ void CL_UpdateScreen(void) // calculate r_refdef.view.quality r_refdef.view.quality = cl_updatescreen_quality; -#ifndef USE_GLES2 - if (qglPolygonStipple) + if(scr_stipple.integer) { - if(scr_stipple.integer) - { - GLubyte stipple[128]; - int i, s, width, parts; - static int frame = 0; - ++frame; - - s = scr_stipple.integer; - parts = (s & 007); - width = (s & 070) >> 3; - - qglEnable(GL_POLYGON_STIPPLE);CHECKGLERROR // 0x0B42 - for(i = 0; i < 128; ++i) - { - int line = i/4; - stipple[i] = (((line >> width) + frame) & ((1 << parts) - 1)) ? 0x00 : 0xFF; - } - qglPolygonStipple(stipple);CHECKGLERROR - } - else - { - qglDisable(GL_POLYGON_STIPPLE);CHECKGLERROR - } + Con_Print("FIXME: scr_stipple not implemented\n"); + Cvar_SetValueQuick(&scr_stipple, 0); } -#endif #ifndef USE_GLES2 if (R_Stereo_Active())