]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_screen.c
Configure all of the CL_MeshEntities* meshes the same, the material flags decide...
[xonotic/darkplaces.git] / cl_screen.c
index 284f85438791184b10cbd5096020b9b583549fc1..0ef93047a3f4247388044dae298cd8d14032ed4a 100644 (file)
@@ -56,7 +56,6 @@ cvar_t scr_screenshot_jpeg = {CVAR_SAVE, "scr_screenshot_jpeg","1", "save jpeg i
 cvar_t scr_screenshot_jpeg_quality = {CVAR_SAVE, "scr_screenshot_jpeg_quality","0.9", "image quality of saved jpeg"};
 cvar_t scr_screenshot_png = {CVAR_SAVE, "scr_screenshot_png","0", "save png instead of targa"};
 cvar_t scr_screenshot_gammaboost = {CVAR_SAVE, "scr_screenshot_gammaboost","1", "gamma correction on saved screenshots and videos, 1.0 saves unmodified images"};
-cvar_t scr_screenshot_hwgamma = {CVAR_SAVE, "scr_screenshot_hwgamma","1", "apply the video gamma ramp to saved screenshots and videos"};
 cvar_t scr_screenshot_alpha = {0, "scr_screenshot_alpha","0", "try to write an alpha channel to screenshots (debugging feature)"};
 cvar_t scr_screenshot_timestamp = {CVAR_SAVE, "scr_screenshot_timestamp", "1", "use a timestamp based number of the type YYYYMMDDHHMMSSsss instead of sequential numbering"};
 // scr_screenshot_name is defined in fs.c
@@ -116,7 +115,6 @@ cvar_t r_speeds_graph_maxdefault = {CVAR_SAVE, "r_speeds_graph_maxdefault", "100
 extern cvar_t v_glslgamma;
 extern cvar_t sbar_info_pos;
 extern cvar_t r_fog_clear;
-#define WANT_SCREENSHOT_HWGAMMA (scr_screenshot_hwgamma.integer && vid_usinghwgamma)
 
 int jpeg_supported = false;
 
@@ -1001,7 +999,7 @@ extern cvar_t r_viewscale;
 extern float viewscalefpsadjusted;
 static void R_TimeReport_EndFrame(void)
 {
-       int i, j, lines, y;
+       int j, lines;
        cl_locnode_t *loc;
        char string[1024+4096];
        mleaf_t *viewleaf;
@@ -1065,6 +1063,7 @@ static void R_TimeReport_EndFrame(void)
 
        if (string[0])
        {
+               int i, y;
                if (string[strlen(string)-1] == '\n')
                        string[strlen(string)-1] = 0;
                lines = 1;
@@ -1096,12 +1095,13 @@ static void R_TimeReport_EndFrame(void)
        if (r_speeds_graph.integer)
        {
                // if we currently have no graph data, reset the graph data entirely
+               int i;
                if (!cls.r_speeds_graph_data)
                        for (i = 0;i < r_stat_count;i++)
                                cls.r_speeds_graph_datamin[i] = cls.r_speeds_graph_datamax[i] = 0;
                if (cls.r_speeds_graph_length != r_speeds_graph_length.integer)
                {
-                       int i, stat, index, d, graph_length, *graph_data;
+                       int stat, index, d, graph_length, *graph_data;
                        cls.r_speeds_graph_length = r_speeds_graph_length.integer;
                        cls.r_speeds_graph_current = 0;
                        if (cls.r_speeds_graph_data)
@@ -1136,7 +1136,7 @@ static void R_TimeReport_EndFrame(void)
        {
                char legend[128];
                r_vertexgeneric_t *v;
-               int numlines;
+               int i, numlines;
                const int *data;
                float x, y, width, height, scalex, scaley;
                int range_default = max(r_speeds_graph_maxdefault.integer, 1);
@@ -1362,7 +1362,6 @@ void CL_Screen_Init(void)
        Cvar_RegisterVariable (&scr_screenshot_jpeg_quality);
        Cvar_RegisterVariable (&scr_screenshot_png);
        Cvar_RegisterVariable (&scr_screenshot_gammaboost);
-       Cvar_RegisterVariable (&scr_screenshot_hwgamma);
        Cvar_RegisterVariable (&scr_screenshot_name_in_mapdir);
        Cvar_RegisterVariable (&scr_screenshot_alpha);
        Cvar_RegisterVariable (&scr_screenshot_timestamp);
@@ -1609,17 +1608,10 @@ Cb = R * -.169 + G * -.332 + B *  .500 + 128.;
 Cr = R *  .500 + G * -.419 + B * -.0813 + 128.;
 */
 
-       if(WANT_SCREENSHOT_HWGAMMA)
-       {
-               VID_BuildGammaTables(&cls.capturevideo.vidramp[0], 256);
-       }
-       else
-       {
-               // identity gamma table
-               BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, cls.capturevideo.vidramp, 256);
-               BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, cls.capturevideo.vidramp + 256, 256);
-               BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, cls.capturevideo.vidramp + 256*2, 256);
-       }
+       // identity gamma table
+       BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, cls.capturevideo.vidramp, 256);
+       BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, cls.capturevideo.vidramp + 256, 256);
+       BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, cls.capturevideo.vidramp + 256*2, 256);
        if(scr_screenshot_gammaboost.value != 1)
        {
                double igamma = 1 / scr_screenshot_gammaboost.value;
@@ -2005,22 +1997,15 @@ qboolean SCR_ScreenShot(char *filename, unsigned char *buffer1, unsigned char *b
 
        GL_ReadPixelsBGRA(x, y, width, height, buffer1);
 
-       if(gammacorrect && (scr_screenshot_gammaboost.value != 1 || WANT_SCREENSHOT_HWGAMMA))
+       if(gammacorrect && (scr_screenshot_gammaboost.value != 1))
        {
                int i;
                double igamma = 1.0 / scr_screenshot_gammaboost.value;
                unsigned short vidramp[256 * 3];
-               if(WANT_SCREENSHOT_HWGAMMA)
-               {
-                       VID_BuildGammaTables(&vidramp[0], 256);
-               }
-               else
-               {
-                       // identity gamma table
-                       BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, vidramp, 256);
-                       BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, vidramp + 256, 256);
-                       BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, vidramp + 256*2, 256);
-               }
+               // identity gamma table
+               BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, vidramp, 256);
+               BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, vidramp + 256, 256);
+               BuildGammaTable16(1.0f, 1.0f, 1.0f, 0.0f, 1.0f, vidramp + 256*2, 256);
                if(scr_screenshot_gammaboost.value != 1)
                {
                        for (i = 0;i < 256 * 3;i++)
@@ -2197,8 +2182,12 @@ static void SCR_DrawScreen (void)
                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
 
-               if(!CL_VM_UpdateView(r_stereo_side ? 0.0 : max(0.0, cl.time - cl.oldtime)))
-                       R_RenderView();
+               // if CSQC is loaded, it is required to provide the CSQC_UpdateView function,
+               // and won't render a view if it does not call that.
+               if (cl.csqc_loaded)
+                       CL_VM_UpdateView(r_stereo_side ? 0.0 : max(0.0, cl.time - cl.oldtime));
+               else
+                       R_RenderView(0, NULL, NULL, r_refdef.view.x, r_refdef.view.y, r_refdef.view.width, r_refdef.view.height);
        }
 
        if (!r_stereo_sidebyside.integer && !r_stereo_horizontal.integer && !r_stereo_vertical.integer)