Optional Vulkan renderer lib for Yamagi Quake II
Find a file
Daniel Gibson 914441ff3a CMake: Make the game build with Visual Studio (2019 16.8 or newer)
The easiest way to build this is to check out the dhewm3-libs project
(https://github.com/dhewm/dhewm3-libs/) to provide the dependencies
(SDL2, OpenAL, cURL) and set YQUAKE2LIBS accordingly, by passing
-DYQUAKE2LIBS=c:/path/to/dhewm3-libs/i686-w64-mingw32 to cmake.

I wouldn't really recommend building with MSVC - I just somehow made it
work and ignored all the warnings and I have no idea how portable the
resulting binaries are etc. For binaries you actually want to use, please
continue using MinGW-w64. Especially my workaround for VLAs (C99 variable
length arrays) is kinda fishy, particularly if those arrays are allocated
in a loop (that's inly done in ref_gl1.dll's code).

The only reason I did this is that I had to debug on Windows and, at least
for my specific bug, gdb didn't really work with binaries produced by
MingGW-w64 and MSVC's debugger works well with binaries produced by MSVC.

Currently requires VS 2019 16.8 or newer with C11 (/std:c11) because I
couldn't get YQ2_ALIGNAS_TYPE() to work with MSVC without _Alignas().
If we can get this to work, VS2015 or newer might suffice (but not older
versions, because their so called C standardlib didn't provide exotic
functions like snprintf()).

# Conflicts:
#	CMakeLists.txt
2022-07-30 15:26:40 +03:00
shaders Add windows shaders.bat generate 2022-03-20 22:37:51 +02:00
src CMake: Make the game build with Visual Studio (2019 16.8 or newer) 2022-07-30 15:26:40 +03:00
.gitignore Add a simple .gitignore file. 2021-06-07 07:14:36 +02:00
LICENSE Add the vkQuake2 Vulkan renderer ported to YQ2. 2021-05-26 10:31:01 +02:00
Makefile Sync Makefile with yquake2 2022-01-23 13:43:03 +02:00
README.md Update usage information. 2022-07-11 00:12:29 +03:00

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.

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

  • vk_validation: Toggle validation layers:

    • 0 - disabled (default in Release)
    • 1 - only errors and warnings
    • 2 - 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 by vk_strings command)
  • 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_custom_particles: Toggle particles type:

    • 0 - textured triangles for particle rendering
    • 1 - 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 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.

  • vk_underwater: Warp the scene if underwater. Set to 0 to disable the effect. Defaults to 1.

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)