mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-03-26 12:52:00 +00:00
vk: fix vid_gamma
This commit is contained in:
parent
8b70b55e17
commit
eb935da156
3 changed files with 50 additions and 25 deletions
|
@ -143,6 +143,7 @@ extern cvar_t *r_mode;
|
|||
|
||||
extern cvar_t *r_lightlevel; // FIXME: This is a HACK to get the client's light level
|
||||
|
||||
extern cvar_t *vk_overbrightbits;
|
||||
extern cvar_t *vk_validation;
|
||||
extern cvar_t *vk_bitdepth;
|
||||
extern cvar_t *vk_log;
|
||||
|
|
|
@ -1655,8 +1655,9 @@ Vk_InitImages
|
|||
*/
|
||||
void Vk_InitImages (void)
|
||||
{
|
||||
int i, j;
|
||||
float g = vid_gamma->value;
|
||||
int i, j;
|
||||
float g;
|
||||
float overbright;
|
||||
|
||||
registration_sequence = 1;
|
||||
|
||||
|
@ -1668,27 +1669,6 @@ void Vk_InitImages (void)
|
|||
|
||||
vk_state.inverse_intensity = 1 / intensity->value;
|
||||
|
||||
Draw_GetPalette();
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if (g == 1)
|
||||
{
|
||||
gammatable[i] = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
float inf;
|
||||
|
||||
inf = 255 * pow((i + 0.5) / 255.5, g) + 0.5;
|
||||
if (inf < 0)
|
||||
inf = 0;
|
||||
if (inf > 255)
|
||||
inf = 255;
|
||||
gammatable[i] = inf;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i<256; i++)
|
||||
{
|
||||
j = i * intensity->value;
|
||||
|
@ -1696,6 +1676,46 @@ void Vk_InitImages (void)
|
|||
j = 255;
|
||||
intensitytable[i] = j;
|
||||
}
|
||||
|
||||
Draw_GetPalette();
|
||||
|
||||
overbright = vk_overbrightbits->value;
|
||||
|
||||
if(overbright < 0.5)
|
||||
overbright = 0.5;
|
||||
|
||||
if(overbright > 4.0)
|
||||
overbright = 4.0;
|
||||
|
||||
g = (2.1 - vid_gamma->value);
|
||||
|
||||
if (g == 1.0)
|
||||
{
|
||||
for (i=0 ; i<256 ; i++) {
|
||||
int inf;
|
||||
|
||||
inf = i * overbright;
|
||||
|
||||
if (inf < 0)
|
||||
inf = 0;
|
||||
if (inf > 255)
|
||||
inf = 255;
|
||||
|
||||
gammatable[i] = inf;
|
||||
}
|
||||
}
|
||||
else
|
||||
for (i=0 ; i<256 ; i++)
|
||||
{
|
||||
int inf;
|
||||
|
||||
inf = (255 * pow ( (i+0.5)/255.5 , g ) + 0.5) * overbright;
|
||||
if (inf < 0)
|
||||
inf = 0;
|
||||
if (inf > 255)
|
||||
inf = 255;
|
||||
gammatable[i] = inf;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -93,6 +93,7 @@ cvar_t *r_mode;
|
|||
|
||||
cvar_t *r_lightlevel; // FIXME: This is a HACK to get the client's light level
|
||||
|
||||
cvar_t *vk_overbrightbits;
|
||||
cvar_t *vk_validation;
|
||||
cvar_t *vk_bitdepth;
|
||||
cvar_t *vk_picmip;
|
||||
|
@ -971,7 +972,7 @@ void R_SetVulkan2D (void)
|
|||
// skip this step if we're in player config screen since it uses RP_UI and draws directly to swapchain
|
||||
if (!(r_newrefdef.rdflags & RDF_NOWORLDMODEL))
|
||||
{
|
||||
float pushConsts[] = { vk_postprocess->value, vid_gamma->value };
|
||||
float pushConsts[] = { vk_postprocess->value, (2.1 - vid_gamma->value)};
|
||||
vkCmdPushConstants(vk_activeCmdbuffer, vk_postprocessPipeline.layout, VK_SHADER_STAGE_FRAGMENT_BIT, 0, sizeof(pushConsts), pushConsts);
|
||||
vkCmdBindDescriptorSets(vk_activeCmdbuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, vk_postprocessPipeline.layout, 0, 1, &vk_colorbufferWarp.descriptorSet, 0, NULL);
|
||||
QVk_BindPipeline(&vk_postprocessPipeline);
|
||||
|
@ -1043,6 +1044,8 @@ void R_Register( void )
|
|||
r_lightlevel = ri.Cvar_Get("r_lightlevel", "0", 0);
|
||||
r_mode = ri.Cvar_Get("r_mode", "11", CVAR_ARCHIVE);
|
||||
r_vsync = ri.Cvar_Get("r_vsync", "0", CVAR_ARCHIVE);
|
||||
|
||||
vk_overbrightbits = ri.Cvar_Get("vk_overbrightbits", "1.0", CVAR_ARCHIVE);
|
||||
#if defined(_DEBUG)
|
||||
vk_validation = ri.Cvar_Get("vk_validation", "2", 0);
|
||||
#else
|
||||
|
@ -1154,6 +1157,7 @@ qboolean R_SetMode (void)
|
|||
vk_vsync->modified = false;
|
||||
vk_device_idx->modified = false;
|
||||
vk_picmip->modified = false;
|
||||
vk_overbrightbits->modified = false;
|
||||
// refresh texture samplers
|
||||
vk_texturemode->modified = true;
|
||||
vk_lmaptexturemode->modified = true;
|
||||
|
@ -1287,7 +1291,7 @@ void R_BeginFrame( float camera_separation )
|
|||
*/
|
||||
if (r_mode->modified || vid_fullscreen->modified || vk_msaa->modified || vk_clear->modified || vk_picmip->modified ||
|
||||
vk_validation->modified || vk_texturemode->modified || vk_lmaptexturemode->modified || vk_aniso->modified || vid_gamma->modified ||
|
||||
vk_mip_nearfilter->modified || vk_sampleshading->modified || vk_vsync->modified || vk_device_idx->modified)
|
||||
vk_mip_nearfilter->modified || vk_sampleshading->modified || vk_vsync->modified || vk_device_idx->modified || vk_overbrightbits->modified)
|
||||
{
|
||||
if (vk_texturemode->modified || vk_lmaptexturemode->modified || vk_aniso->modified)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue