Add documentation

This commit is contained in:
Denis Pauk 2020-01-26 14:50:08 +02:00 committed by Yamagi
parent bfab2d3042
commit 2add32b5a8
7 changed files with 109 additions and 25 deletions

View file

@ -327,6 +327,95 @@ it's `+set busywait 0` (setting the `busywait` cvar) and `-portable`
custom gun field of few is used. Defaults to `8`, which is more or
less optimal for the default gun field of view of 80.
## Graphics (Vulkan only)
* **vk_validation**: Toggle validation layers:
* `0` - disabled (default in Release)
* `1` - only errors and warnings
* `2` - full validation (default in Debug)
* **vk_strings**: Print some basic Vulkan/GPU information.
* **vk_mem**: Print dynamic vertex/index/uniform/triangle fan buffer
memory usage statistics.
* **vk_device**: Specify index of the preferred Vulkan device on systems
with multiple GPUs:
* `-1` - prefer first DISCRETE_GPU (default)
* `0..n` - use device #n (full list of devices is returned by
`vk_strings` command)
* **vk_msaa**: Toggle MSAA:
* `0` - off (default)
* `1` - MSAAx2
* `2` - MSAAx4
* `3` - MSAAx8
* `4` - MSAAx16
* **vk_sampleshading**: Toggle sample shading for MSAA. (default: `1`)
* **vk_flashblend**: Toggle the blending of lights onto the environment.
(default: `0`)
* **vk_polyblend**: Blend fullscreen effects: blood, powerups etc.
(default: `1`)
* **vk_skymip**: Toggle the usage of mipmap information for the sky
graphics. (default: `0`)
* **vk_finish**: Inserts a `vkDeviceWaitIdle()` call on frame render
start (default: `0`). Don't use this, it's there just for the sake of
having a `gl_finish` equivalent!
* **vk_point_particles**: Toggle between using POINT_LIST and textured
triangles for particle rendering. (default: `1`)
* **vk_particle_size**: Rendered particle size. (default: `40`)
* **vk_particle_att_a**: Intensity of the particle A attribute.
(default: `0.01`)
* **vk_particle_att_b**: Intensity of the particle B attribute.
(default: `0`)
* **vk_particle_att_c**: Intensity of the particle C attribute.
(default: `0.01`)
* **vk_particle_min_size**: The minimum size of a rendered particle.
(default: `2`)
* **vk_particle_max_size**: The maximum size of a rendered particle.
(default: `40`)
* **vk_shadows**: Draw experimental entity shadows. (default: `0`)
* **vk_picmip**: Shrink factor for the textures. (default: `0`)
* **vk_round_down**: Toggle the rounding of texture sizes. (default: `1`)
* **vk_dynamic**: Use dynamic lighting. (default: `1`)
* **vk_showtris**: Display mesh triangles. (default: `0`)
* **vk_lightmap**: Display lightmaps. (default: `0`)
* **vk_aniso**: Toggle anisotropic filtering. (default: `1`)
* **vk_postprocess**: Toggle additional color/gamma correction.
(default: `1`)
* **vk_mip_nearfilter**: Use nearest-neighbor filtering for mipmaps.
(default: `0`)
* **vk_texturemode**: Change current texture filtering mode:
* `VK_NEAREST` - nearest-neighbor interpolation, no mipmaps
* `VK_LINEAR` - linear interpolation, no mipmaps
* `VK_MIPMAP_NEAREST` - nearest-neighbor interpolation with mipmaps
* `VK_MIPMAP_LINEAR` - linear interpolation with mipmaps (default)
* **vk_lmaptexturemode**: Same as `vk_texturemode` but applied to
lightmap textures.
## cvar operations
cvar operations are special commands that allow the programmatic

View file

@ -140,22 +140,21 @@ extern cvar_t *r_novis;
extern cvar_t *r_nocull;
extern cvar_t *r_lerpmodels;
extern cvar_t *r_mode;
extern cvar_t *r_lockpvs;
extern cvar_t *r_modulate;
extern cvar_t *r_vsync;
extern cvar_t *r_clear;
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;
extern cvar_t *vk_picmip;
extern cvar_t *vk_skymip;
extern cvar_t *vk_round_down;
extern cvar_t *vk_flashblend;
extern cvar_t *vk_finish;
extern cvar_t *vk_clear;
extern cvar_t *vk_lockpvs;
extern cvar_t *vk_polyblend;
extern cvar_t *vk_modulate;
extern cvar_t *vk_shadows;
extern cvar_t *vk_particle_size;
extern cvar_t *vk_particle_att_a;
@ -171,7 +170,6 @@ extern cvar_t *vk_texturemode;
extern cvar_t *vk_lmaptexturemode;
extern cvar_t *vk_aniso;
extern cvar_t *vk_sampleshading;
extern cvar_t *vk_vsync;
extern cvar_t *vk_device_idx;
extern cvar_t *vk_retexturing;

View file

@ -1701,7 +1701,7 @@ qboolean QVk_Init(SDL_Window *window)
// setup render passes
for (int i = 0; i < RP_COUNT; ++i)
{
vk_renderpasses[i].colorLoadOp = vk_clear->value ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_DONT_CARE;
vk_renderpasses[i].colorLoadOp = r_clear->value ? VK_ATTACHMENT_LOAD_OP_CLEAR : VK_ATTACHMENT_LOAD_OP_DONT_CARE;
}
VkSampleCountFlagBits msaaMode = GetSampleCount();

View file

@ -274,7 +274,7 @@ int RecursiveLightPoint (mnode_t *node, vec3_t start, vec3_t end)
maps++)
{
for (i=0 ; i<3 ; i++)
scale[i] = vk_modulate->value*r_newrefdef.lightstyles[surf->styles[maps]].rgb[i];
scale[i] = r_modulate->value*r_newrefdef.lightstyles[surf->styles[maps]].rgb[i];
pointcolor[0] += lightmap[0] * scale[0] * (1.0/255);
pointcolor[1] += lightmap[1] * scale[1] * (1.0/255);
@ -343,7 +343,7 @@ void R_LightPoint (vec3_t p, vec3_t color)
}
}
VectorScale (color, vk_modulate->value, color);
VectorScale (color, r_modulate->value, color);
}
@ -496,7 +496,7 @@ void R_BuildLightMap (msurface_t *surf, byte *dest, int stride)
bl = s_blocklights;
for (i=0 ; i<3 ; i++)
scale[i] = vk_modulate->value*r_newrefdef.lightstyles[surf->styles[maps]].rgb[i];
scale[i] = r_modulate->value*r_newrefdef.lightstyles[surf->styles[maps]].rgb[i];
if ( scale[0] == 1.0F &&
scale[1] == 1.0F &&
@ -533,7 +533,7 @@ void R_BuildLightMap (msurface_t *surf, byte *dest, int stride)
bl = s_blocklights;
for (i=0 ; i<3 ; i++)
scale[i] = vk_modulate->value*r_newrefdef.lightstyles[surf->styles[maps]].rgb[i];
scale[i] = r_modulate->value*r_newrefdef.lightstyles[surf->styles[maps]].rgb[i];
if ( scale[0] == 1.0F &&
scale[1] == 1.0F &&

View file

@ -101,10 +101,10 @@ cvar_t *vk_skymip;
cvar_t *vk_round_down;
cvar_t *vk_flashblend;
cvar_t *vk_finish;
cvar_t *vk_clear;
cvar_t *vk_lockpvs;
cvar_t *r_clear;
cvar_t *r_lockpvs;
cvar_t *vk_polyblend;
cvar_t *vk_modulate;
cvar_t *r_modulate;
cvar_t *vk_shadows;
cvar_t *vk_particle_size;
cvar_t *vk_particle_att_a;
@ -123,7 +123,6 @@ cvar_t *vk_lmaptexturemode;
cvar_t *vk_aniso;
cvar_t *vk_mip_nearfilter;
cvar_t *vk_sampleshading;
cvar_t *vk_vsync;
cvar_t *vk_device_idx;
cvar_t *vk_retexturing;
@ -1057,10 +1056,10 @@ void R_Register( void )
vk_round_down = ri.Cvar_Get("vk_round_down", "1", 0);
vk_flashblend = ri.Cvar_Get("vk_flashblend", "0", 0);
vk_finish = ri.Cvar_Get("vk_finish", "0", CVAR_ARCHIVE);
vk_clear = ri.Cvar_Get("vk_clear", "0", CVAR_ARCHIVE);
vk_lockpvs = ri.Cvar_Get("vk_lockpvs", "0", 0);
r_clear = ri.Cvar_Get("r_clear", "0", CVAR_ARCHIVE);
r_lockpvs = ri.Cvar_Get("r_lockpvs", "0", 0);
vk_polyblend = ri.Cvar_Get("vk_polyblend", "1", 0);
vk_modulate = ri.Cvar_Get("vk_modulate", "1", CVAR_ARCHIVE);
r_modulate = ri.Cvar_Get("r_modulate", "1", CVAR_ARCHIVE);
vk_shadows = ri.Cvar_Get("vk_shadows", "0", CVAR_ARCHIVE);
vk_particle_size = ri.Cvar_Get("vk_particle_size", "40", CVAR_ARCHIVE);
vk_particle_att_a = ri.Cvar_Get("vk_particle_att_a", "0.01", CVAR_ARCHIVE);
@ -1079,7 +1078,6 @@ void R_Register( void )
vk_aniso = ri.Cvar_Get("vk_aniso", "1", CVAR_ARCHIVE);
vk_mip_nearfilter = ri.Cvar_Get("vk_mip_nearfilter", "0", CVAR_ARCHIVE);
vk_sampleshading = ri.Cvar_Get("vk_sampleshading", "1", CVAR_ARCHIVE);
vk_vsync = ri.Cvar_Get("vk_vsync", "0", CVAR_ARCHIVE);
vk_device_idx = ri.Cvar_Get("vk_device", "-1", CVAR_ARCHIVE);
vk_retexturing = ri.Cvar_Get("vk_retexturing", "0", CVAR_ARCHIVE);
@ -1150,11 +1148,10 @@ qboolean R_SetMode (void)
vid_gamma->modified = false;
vk_msaa->modified = false;
vk_clear->modified = false;
r_clear->modified = false;
vk_validation->modified = false;
vk_mip_nearfilter->modified = false;
vk_sampleshading->modified = false;
vk_vsync->modified = false;
vk_device_idx->modified = false;
vk_picmip->modified = false;
vk_overbrightbits->modified = false;
@ -1289,9 +1286,9 @@ void R_BeginFrame( float camera_separation )
/*
** change modes if necessary
*/
if (r_mode->modified || vid_fullscreen->modified || vk_msaa->modified || vk_clear->modified || vk_picmip->modified ||
if (r_mode->modified || vid_fullscreen->modified || vk_msaa->modified || r_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_overbrightbits->modified)
vk_mip_nearfilter->modified || vk_sampleshading->modified || r_vsync->modified || vk_device_idx->modified || vk_overbrightbits->modified)
{
if (vk_texturemode->modified || vk_lmaptexturemode->modified || vk_aniso->modified)
{

View file

@ -987,7 +987,7 @@ void R_MarkLeaves (void)
// development aid to let you run around and see exactly where
// the pvs ends
if (vk_lockpvs->value)
if (r_lockpvs->value)
return;
r_visframecount++;

View file

@ -145,7 +145,7 @@ VkResult QVk_CreateSwapchain()
}
VkSurfaceFormatKHR swapSurfaceFormat = getSwapSurfaceFormat(surfaceFormats, formatCount);
VkPresentModeKHR swapPresentMode = getSwapPresentMode(presentModes, presentModesCount, vk_vsync->value > 0 ? VK_PRESENT_MODE_FIFO_KHR : VK_PRESENT_MODE_MAILBOX_KHR);
VkPresentModeKHR swapPresentMode = getSwapPresentMode(presentModes, presentModesCount, r_vsync->value > 0 ? VK_PRESENT_MODE_FIFO_KHR : VK_PRESENT_MODE_MAILBOX_KHR);
free(surfaceFormats);
free(presentModes);