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
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;
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;
if (string[0])
{
+ int i, y;
if (string[strlen(string)-1] == '\n')
string[strlen(string)-1] = 0;
lines = 1;
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)
{
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);
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);
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;
buffer1 = (unsigned char *)Mem_Alloc(tempmempool, size * size * 4);
buffer2 = (unsigned char *)Mem_Alloc(tempmempool, size * size * 3);
+ CL_UpdateEntityShading();
for (j = 0;j < 12;j++)
{
dpsnprintf(filename, sizeof(filename), "env/%s%s.tga", basename, envmapinfo[j].name);
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++)
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)))
+ // 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
+ {
+ CL_UpdateEntityShading();
R_RenderView();
+ }
}
if (!r_stereo_sidebyside.integer && !r_stereo_horizontal.integer && !r_stereo_vertical.integer)