+ if (!vid_usinghwgamma)
+ {
+ // we use one big triangle for all the screen blends
+ varray_texcoord[0][0] = 0;varray_texcoord[0][1] = 0;
+ varray_texcoord[0][4] = 0;varray_texcoord[0][5] = 0;
+ varray_texcoord[0][8] = 0;varray_texcoord[0][9] = 0;
+ varray_vertex[0] = -5000;varray_vertex[1] = -5000;varray_vertex[2] = 10;
+ varray_vertex[4] = 10000;varray_vertex[5] = -5000;varray_vertex[6] = 10;
+ varray_vertex[8] = -5000;varray_vertex[9] = 10000;varray_vertex[10] = 10;
+ // all the blends ignore depth
+ memset(&m, 0, sizeof(m));
+ m.depthdisable = true;
+ if (v_color_enable.integer)
+ {
+ c[0] = v_color_white_r.value;
+ c[1] = v_color_white_g.value;
+ c[2] = v_color_white_b.value;
+ }
+ else
+ c[0] = c[1] = c[2] = v_contrast.value;
+ VectorScale(c, (float) (1 << v_overbrightbits.integer), c);
+ if (c[0] >= 1.01f || c[1] >= 1.01f || c[2] >= 1.01f)
+ {
+ m.blendfunc1 = GL_DST_COLOR;
+ m.blendfunc2 = GL_ONE;
+ R_Mesh_State(&m);
+ while (c[0] >= 1.01f || c[1] >= 1.01f || c[2] >= 1.01f)
+ {
+ GL_Color(bound(0, c[0] - 1, 1), bound(0, c[1] - 1, 1), bound(0, c[2] - 1, 1), 1);
+ R_Mesh_Draw(3, 1, polygonelements);
+ VectorScale(c, 0.5, c);
+ }
+ }
+ if (v_color_enable.integer)
+ {
+ c[0] = v_color_black_r.value;
+ c[1] = v_color_black_g.value;
+ c[2] = v_color_black_b.value;
+ }
+ else
+ c[0] = c[1] = c[2] = v_brightness.value;
+ if (c[0] >= 0.01f || c[1] >= 0.01f || c[2] >= 0.01f)
+ {
+ m.blendfunc1 = GL_ONE;
+ m.blendfunc2 = GL_ONE;
+ R_Mesh_State(&m);
+ GL_Color(c[0], c[1], c[2], 1);
+ R_Mesh_Draw(3, 1, polygonelements);
+ }
+ }
+ R_Mesh_Finish();