d66959e15e
This ports the high dpi awareness stuff from the GL3 renderer to the Vulkan renderer. The approach is the same: Implement a new function `SDL_Vulkan_GetDrawableSize()` and hook it into the extended renderer API, the client uses to determine the actual drawable size which is communicated back into the renderer. Like GL3 Vulkan has a second representation of the drawable size in the `vid` struct, overwrite that with the actual drawable size. Note: Starting with this commit an up to date client which implements renderer API version 6 is needed. Older clients won't load the renderer. |
||
---|---|---|
shaders | ||
src | ||
.gitignore | ||
LICENSE | ||
Makefile | ||
README.md |
Vulkan Renderer Library for Yamagi Quake II
This is the vkQuake2 vulkan renderer library ported to Yamagi Quake II.
Compilation
You'll need:
- clang or gcc,
- GNU Make,
- SDL2 with
sdl2-config
, - vulkan-headers,
- vulkan-validationlayers if you like to debug issues.
Type make
to compile the library. If the compilation is successfull,
the library can be found under release/ref_vk.dll (Windows) or
release/ref_vk.so (unixoid systems).
Usage
Copy the library next to your Yamagi Quake II executable. You can select
Vulkan through the video menu or by cvar with vid_renderer vk
followed
by a vid_restart
.
If you have run into issues, please attach output logs with OS/driver version and device name to the bug report. List of currently tested devices for the reference.
Note: Game saves outputs to Documents\YamagiQ2\stdout.txt
under
windows.
Console Variables
-
r_validation: Toggle validation layers:
0
- disabled (default in Release)1
- only errors and warnings, show image load issues2
- best-practices validation
-
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 byvk_strings
command)
-
vk_sampleshading: Toggle sample shading for MSAA. (default:
1
) -
vk_flashblend: Toggle the blending of lights onto the environment. (default:
0
) -
r_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 agl_finish
equivalent! -
vk_custom_particles: Toggle particles type:
0
- textured triangles for particle rendering1
- between using POINT_LIST (default)2
- textured square for particle rendering
-
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_picmip: Shrink factor for the textures. (default:
0
) -
vk_pixel_size: Pixel size when rendering the world, used to simulate lower screen resolutions. The value represents the length, in pixels, of the side of each pixel block. For example, with size 2 pixels are 2x2 squares, and at 1600x1200 the image is effectively an upscaled 800x600 image. (default:
1
) -
vk_dynamic: Use dynamic lighting. (default:
1
) -
vk_showtris: Display mesh triangles. (default:
0
) -
vk_lightmap: Display lightmaps. (default:
0
) -
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 mipmapsVK_LINEAR
- linear interpolation, no mipmapsVK_MIPMAP_NEAREST
- nearest-neighbor interpolation with mipmapsVK_MIPMAP_LINEAR
- linear interpolation with mipmaps (default)
-
vk_lmaptexturemode: Same as
vk_texturemode
but applied to lightmap textures. -
vk_underwater: Warp the scene if underwater. Set to
0
to disable the effect. Defaults to1
.
Console Variables (MacOS)
-
vk_molten_metalbuffers: enable/disable Metal buffers to bind textures more efficiently (>= Big Sur). (default:
0
) -
vk_molten_fastmath: enable/disable float point op optimisations. (default:
0
)
Custom model format support
Render unofficially supports mdl/Quake 1, dkm/Daikatana and fm/Heretic2, are provided without any warranty of support. The simplest way to check is renaming the mdl/dkm/fm format file to md2 and place instead the original tris.md2 file. FM is rendered with all meshes without support of filtering/selecting the exact part of the model.