From 2add32b5a8d1a71de7ace5cbfd138ab85ee295cf Mon Sep 17 00:00:00 2001 From: Denis Pauk Date: Sun, 26 Jan 2020 14:50:08 +0200 Subject: [PATCH] Add documentation --- doc/040_cvarlist.md | 89 +++++++++++++++++++++++++ src/client/refresh/vk/header/vk_local.h | 10 ++- src/client/refresh/vk/vk_common.c | 2 +- src/client/refresh/vk/vk_light.c | 8 +-- src/client/refresh/vk/vk_rmain.c | 21 +++--- src/client/refresh/vk/vk_rsurf.c | 2 +- src/client/refresh/vk/vk_swapchain.c | 2 +- 7 files changed, 109 insertions(+), 25 deletions(-) diff --git a/doc/040_cvarlist.md b/doc/040_cvarlist.md index 71eb76da..fa97793c 100644 --- a/doc/040_cvarlist.md +++ b/doc/040_cvarlist.md @@ -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 diff --git a/src/client/refresh/vk/header/vk_local.h b/src/client/refresh/vk/header/vk_local.h index 2e2b0f44..0fd8a4d4 100644 --- a/src/client/refresh/vk/header/vk_local.h +++ b/src/client/refresh/vk/header/vk_local.h @@ -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; diff --git a/src/client/refresh/vk/vk_common.c b/src/client/refresh/vk/vk_common.c index 34fb5164..a688a47f 100644 --- a/src/client/refresh/vk/vk_common.c +++ b/src/client/refresh/vk/vk_common.c @@ -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(); diff --git a/src/client/refresh/vk/vk_light.c b/src/client/refresh/vk/vk_light.c index 19b4f728..dcfb68c4 100644 --- a/src/client/refresh/vk/vk_light.c +++ b/src/client/refresh/vk/vk_light.c @@ -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 && diff --git a/src/client/refresh/vk/vk_rmain.c b/src/client/refresh/vk/vk_rmain.c index 942aca4a..03a6ef5a 100644 --- a/src/client/refresh/vk/vk_rmain.c +++ b/src/client/refresh/vk/vk_rmain.c @@ -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) { diff --git a/src/client/refresh/vk/vk_rsurf.c b/src/client/refresh/vk/vk_rsurf.c index 3350bc7f..509e1d52 100644 --- a/src/client/refresh/vk/vk_rsurf.c +++ b/src/client/refresh/vk/vk_rsurf.c @@ -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++; diff --git a/src/client/refresh/vk/vk_swapchain.c b/src/client/refresh/vk/vk_swapchain.c index e436ab07..c11f81fa 100644 --- a/src/client/refresh/vk/vk_swapchain.c +++ b/src/client/refresh/vk/vk_swapchain.c @@ -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);