vkQuake is a Quake 1 port using Vulkan instead of OpenGL for rendering

Overview

🌋 vkQuake

vkQuake is a Quake 1 port using Vulkan instead of OpenGL for rendering. It is based on the popular QuakeSpasm port and runs all mods compatible with it like Arcane Dimensions. Due to the port using Vulkan and other optimizations it can achieve much better frame rates.

Compared to QuakeSpasm vkQuake also features a software Quake like underwater effect, has better color precision, generates mipmap for water surfaces at runtime and has native support for anti-aliasing and AF. Furthermore frame rates above 72FPS do not break physics.

vkQuake also serves as a Vulkan demo application that shows basic usage of the API. For example it demonstrates render passes & sub passes, pipeline barriers & synchronization, compute shaders, push & specialization constants, CPU/GPU parallelism and memory pooling.

Building

Windows

Prerequisites:

Start Git Bash and clone the vkQuake repo:

git clone https://github.com/Novum/vkQuake.git

Visual Studio

Install Visual Studio Community with Visual C++ component.

Open the Visual Studio solution, Windows\VisualStudio\vkquake.sln, select the desired configuration and platform, then build the solution.

MinGW

Download the latest release of MinGW-w64 and install it:

  • 32 bit:
    • Architecture: i686
    • Install location: C:\mingw-w32
  • 64 bit:
    • Architecture: x86_64
    • Install location: C:\mingw-w64

Also install the latest release of MozillaBuild with default settings.

Start MSYS with c:\mozilla-build\msys\msys.bat and compile vkQuake.

32 bit:

cd vkQuake/Quake
export PATH=${PATH}:/c/mingw-w32/mingw32/bin
make USE_SDL2=1 -f Makefile.w32

64 bit:

cd vkQuake/Quake
export PATH=${PATH}:/c/mingw-w64/mingw64/bin
make USE_SDL2=1 -f Makefile.w64

Linux

Make sure that both your GPU and your GPU driver supports Vulkan.

To compile vkQuake, first install the build dependencies:

Ubuntu:

apt-get install git make gcc libsdl2-dev libvulkan-dev libvorbis-dev libmad0-dev libx11-xcb-dev

Arch Linux:

pacman -S git flac glibc libgl libmad libvorbis libx11 sdl2 vulkan-validation-layers

* Please note that for vkquake > v0.50, you will need at least v1.0.12.0 of libvulkan-dev (See #55).

Then clone the vkQuake repo:

git clone https://github.com/Novum/vkQuake.git

Now go to the Quake directory and compile the executable:

cd vkQuake/Quake
make

Note

vkQuake 0.97 and later requires at least SDL2 2.0.6 with enabled Vulkan support. The precompiled versions in some of the distribution repositories (e.g. Ubuntu) do not currently ship with Vulkan support. You will therefore need to compile it from source. Make sure you have libvulkan-dev installed before running configure.

MacOS

To compile vkQuake, first install the build dependencies with Homebrew:

brew install molten-vk vulkan-headers sdl2 libvorbis flac mad

Then clone the vkQuake repo:

git clone https://github.com/Novum/vkQuake.git

Now go to the Quake directory and compile the executable:

cd vkQuake/Quake
make

Usage

Quake has 4 episodes that are split into 2 files:

  • pak0.pak: contains episode 1
  • pak1.pak: contains episodes 2-4

These files aren't free to distribute, but pak0.pak is sufficient to run the game and it's freely available via the shareware version of Quake. Use 7-Zip or a similar file archiver to extract quake106.zip/resource.1/ID1/PAK0.PAK. Alternatively, if you own the game, you can obtain both .pak files from its install media.

Now locate your vkQuake executable, i.e. vkQuake.exe on Windows or vkquake on Ubuntu. You need to create an id1 directory next to that and copy pak0.pak there, e.g.:

  • Windows: Windows\VisualStudio\Build-vkQuake\x64\Release\id1\pak0.pak
  • Ubuntu: Quake\id1\pak0.pak

Then vkQuake is ready to play.

Optional - Music / Soundtrack

The original quake had a great soundtrack by Nine Inch Nails. Unfortunately, the Steam version does not come with the soundtrack files. The GOG-provided files need to be converted before they are ready for use. In general, you'll just need to move a "music" folder to the correct location within your vkQuake installation (.e.g /usr/share/quake/id1/music). Most Quake engines play nicest with soundtracks placed in the id1/music subfolder vs. sound\cdtracks

QuakeSpasm, the engine vkQuake is derived from, supports OGG, MP3, FLAC, and WAV audio formats. The Linux version of QuakeSpasm/VkQuake requires external libraries: libogg or libvorbis for OGG support, libmad or libmpg123 for MP3, and libflac for FLAC. If you already have a setup that works for the engine you're currently using, then you don't necessarily have to change it.

To convert the WAV files to FLAC, run this command with libflac and sox installed in a directory containing the WAV files:

for f in *.wav; do sox "$f" "${f%.wav}.flac"; done

Generally, the below setup works for multiple engines, including Quakespasm/vkQuake:

  • The music files are loose files, NOT inside a pak or pk3 archive.
  • The files are placed inside a "music" subfolder of the "id1" folder. For missionpack or mod soundtracks, the files are placed in a "music" subfolder of the appropriate game folder. So the original Quake soundtrack files go inside "id1\music", Mission Pack 1 soundtrack files go inside "hipnotic\music", and Mission Pack 2 soundtrack files go inside "rogue\music".
  • The files are named in the pattern "tracknn", where "nn" is the CD track number that the file was ripped from. Since the soundtrack starts at the second CD track, MP3 soundtrack files are named "track02.mp3", "track03.mp3", etc. OGG soundtrack files are named "track02.ogg", "track03.ogg", etc. FLAC soundtrack files are named "track02.flac", "track03.flac", etc. WAV soundtrack files are named "track02.wav", "track03.wav", etc.

See more: Quake Soundtrack Solutions (Steam Community)

Issues
  • Add support for the 2021 re-release

    Add support for the 2021 re-release

    This fixes crashes with the 2021 re-release and adds basic support for localized strings so that the new maps display proper messages instead of text id's. Localization data is read from a loc_english.txt file in the mod directory, in the same format as the files in the localization folder in the rerelease/QuakeEX.kpf zip archive. Currently the files need to be copied manually - adding code to read zip files just for this feature seemed like feature creep, and can be added later if necessary.

    @sezero, I'm hoping this can also be merged into QS, can you please have a look?

    opened by andrei-drexler 90
  • Re-release Update Today Causes Text Not to Display

    Re-release Update Today Causes Text Not to Display

    Quake on steam had an update today: https://steamdb.info/patchnotes/8507405/

    After that, the text on-screen is no longer displaying. The most obvious example is the difficulty portals, where they normally display and make a sound, only the sound happens, not the text.

    Attached is a log of it running: quake.log

    opened by d10sfan 26
  • x86 mingw binaries  crash

    x86 mingw binaries crash

    following the discussion in https://github.com/Novum/vkQuake/commit/1491afe777ffdefc65e5ce81b5005a3742547484#comments x86 mingw binaries crash immediately after map load (cl_startdemos 0) Binaries without any optimizations -O1 or -O2 run fine. Crash introduced first somewhere between 1.13.0 and 1.13.1

    here is a backtrace ( -g -O2 ) current git master

    Thread 8 received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 26248.0x6d94]
    R_DrawAliasModel ([email protected]=0x307938 <vulkan_globals+1311064>, e=0x4fe7f40) at r_alias.c:470
    470                             tx = playertextures[i - 1];
    (gdb) bt
    #0  R_DrawAliasModel ([email protected]=0x307938 <vulkan_globals+1311064>,
        e=0x4fe7f40) at r_alias.c:470
    #1  0x0008290c in R_DrawEntitiesOnList (
        cbx=0x307938 <vulkan_globals+1311064>, [email protected]=false)
        at gl_rmain.c:450
    #2  0x00082e8a in R_DrawEntitiesOnList (alphapass=false, cbx=<optimized out>)
        at gl_rmain.c:424
    #3  R_DrawEntitiesTask (unused=0x1532cf4 <tasks+2036>) at gl_rmain.c:709
    #4  0x0013d8d0 in Task_Worker (data=<optimized out>) at tasks.c:245
    #5  0x6c37630a in SDL_wcsstr () from C:\Games\vkquake_x86\SDL2.dll
    #6  0x6c376fe3 in SDL_wcsstr () from C:\Games\vkquake_x86\SDL2.dll
    #7  0x6c37700b in SDL_wcsstr () from C:\Games\vkquake_x86\SDL2.dll
    #8  0x76b06cff in msvcrt!_beginthreadex () from C:\Windows\SysWOW64\msvcrt.dll
    #9  0x76b06dc1 in msvcrt!_endthreadex () from C:\Windows\SysWOW64\msvcrt.dll
    #10 0x776efa29 in KERNEL32!BaseThreadInitThunk ()
       from C:\Windows\SysWOW64\kernel32.dll
    #11 0x77b27a7e in ntdll!RtlGetAppContainerNamedObjectPath ()
       from C:\Windows\SysWOW64\ntdll.dll
    #12 0x77b27a4e in ntdll!RtlGetAppContainerNamedObjectPath ()
       from C:\Windows\SysWOW64\ntdll.dll
    #13 0x00000000 in ?? ()
    (gdb) frame
    #0  R_DrawAliasModel ([email protected]=0x307938 <vulkan_globals+1311064>,
        e=0x4fe7f40) at r_alias.c:470
    470                             tx = playertextures[i - 1];
    
    
    bug 
    opened by j4reporting 23
  • Texture transparency doesn't work properly

    Texture transparency doesn't work properly

    System specifications

    OS - Arch Linux (rolling) GPU - Radeon RX 5500M & AMD Renoir (integrated graphics) Vulkan drivers - RADV (part of Mesa graphics libraries) CPU - Ryzen 7 4800H with Radeon Graphics

    vkquake version - latest git commit

    Bug

    Texture transparency only works when viewing textures under certain angles, as shown in Alkaline's start map. Screenshot from 2022-05-28 08-57-37 Screenshot from 2022-05-28 08-57-40

    Reproduction

    1. Load Alkaline's start map
    2. See that the windows are opaque
    3. Turn right until the windows become transparent.
    bug 
    opened by Vagankovo 22
  • Arcane Dimensions: Stuttering on elevators

    Arcane Dimensions: Stuttering on elevators

    Hi, I noticed that there is some ugly stuttering when moving on elevators - especially in Arcane Dimensions "The Crucial Error" map but also in some others. As if the camera sinks bellow the elevator plate randomly. I thought this is due to my 144Hz refresh but it behaves the same at 60 or 72 FPS. It is also present in vanilla Quakespasm but the Spiked fork (QSS) is completelly smooth in this regard. Is there some tweak that can be ported from QSS to vkQuake? QSS runs OK most of the time but has performance/resources utilization problems on large maps just like vanilla Quakespasm. vkQuake runs absolutelly stunning with everything I throw at it!

    Here are saves from the map before an elevator (Arcane Dimensions 1.8 patch 1). s18.zip s19.zip

    enhancement 
    opened by dezo2 20
  • Fullscreen mode - Shaking (Linux)

    Fullscreen mode - Shaking (Linux)

    Hi,

    when I enter into Fullscreen mode, the screen begins to shake (up and down) on a period of about 0.5s. Sound also clips are the screen does.

    When I leave Fullscreen mode, the HUD is not fully viewable (health/armour is offscreen).

    Resolution is 21:9 2560 by 1080p V-Sync on/off does nothing Vkquake v1.04.1

    opened by dmsun 20
  • [Bug] Certain (water) surfaces move depending on camera angle

    [Bug] Certain (water) surfaces move depending on camera angle

    System info

    OS - Arch Linux (rolling) GPU - Radeon RX 5500M & AMD Renoir (integrated graphics) CPU - Ryzen 7 4800H with Radeon Graphics

    vkquake version - 1.11.1

    Bug

    Certain water surfaces move depending on your camera angle. I also have seen other surfaces behave like that. This is a graphical glitch.

    Reproduction

    HIP1M2 is a good place where this is potentially reproducible.

    1. Load HIP1M2
    2. Go to an area with water
    3. Start looking around in different ways
    4. See how the surfaces move.

    Examples in HIP1M2

    Screenshot from 2021-11-13 20-33-18 Screenshot from 2021-11-13 20-33-23 Screenshot from 2021-11-13 20-34-28

    Example in alk_bdown (mod Alkaline)

    Screenshot from 2021-11-13 20-27-15 Screenshot from 2021-11-13 20-27-21

    bug help wanted 
    opened by Vagankovo 19
  • Failure to compile with GCC 12.1

    Failure to compile with GCC 12.1

    Using master as of the date of this report.

    Compilation fails on this, GCC 12.1, openSUSE Tumbleweed:

    tasks.c: In function ‘Tasks_Init’:
    tasks.c:297:55: error: writing 16 bytes into a region of size 0 [-Werror=stringop-overflow=]
      297 |                 steal_worker_indices[i + num_workers] = i;
          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
    tasks.c:87:24: note: at offset 64 into destination object ‘steal_worker_indices’ of size 64
       87 | static uint8_t         steal_worker_indices[MAX_WORKERS * 2];
    
    opened by bubbleguuum 17
  • Audio popping/crackling with version 1.13.1

    Audio popping/crackling with version 1.13.1

    Hi, I noticed that there was some strange audio popping/crackling in the new 1.13.1 version that was not there in the previous version. This seems to happen with sound effects and is most noticeable with the axe "ting" effect and the nailgun firing sound.

    As a test, I tried a fresh download and extraction of versions 1.13.0 and 1.13.1 with no external music loaded, no mods, only the PAK0 and PAK1 files under the id1 directory. All audio settings were left at defaults.

    Here's a video demonstration with audio that has the crackling:

    https://www.youtube.com/watch?v=oGWM9bWph2A

    00:00 - Version 1.13.0 with no audio crackling 02:10 - Version 1.13.1 with audio crackling 04:20 - Lowering the game volume doesn't seem to make a difference

    You can hear the direct difference most easily from the axe "tings" at timestamps 0:30 and 2:43.

    opened by zenxero 17
  • QUAKE ERROR: Couldn't create window

    QUAKE ERROR: Couldn't create window

    Hi, Im running Ubuntu 17.10 with Intel HD4000 (Padoka PPA). Compiled but doesnt run. Previous version working good (the one with SDL files missing when compile, had to revert some files to make it work) on the same setup.

    Command line: ./vkquake Found SDL version 2.0.6 Detected 4 CPUs. Quake 1.09 (c) id Software GLQuake 1.00 (c) id Software FitzQuake 0.85 (c) John Fitzgibbons FitzQuake SDL port (c) SleepwalkR, Baker QuakeSpasm 0.93.0 (c) Ozkan Sezer, Eric Wasylishen & others vkQuake 0.97.0 (c) Axel Gneiting & others Host_Init Playing registered version. Console initialized. UDP Initialized Server using protocol 666 (FitzQuake) Exe: 20:07:29 Nov 24 2017 256.0 megabyte heap

    ERROR-OUT BEGIN

    QUAKE ERROR: Couldn't create window

    vulkaninfo dump:

    VULKAN INFO

    Vulkan API Version: 1.0.61

    INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_unique_objects.json, version "1.1.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_parameter_validation.json, version "1.1.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_threading.json, version "1.1.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_standard_validation.json, version "1.1.1" INFO: [loader] Code 0 : Encountered meta-layer VK_LAYER_LUNARG_standard_validation INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_object_tracker.json, version "1.1.0" INFO: [loader] Code 0 : Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_core_validation.json, version "1.1.0" INFO: [loader] Code 0 : Meta-layer VK_LAYER_LUNARG_standard_validation all 5 component layers appear to be valid. INFO: [loader] Code 0 : Found ICD manifest file /etc/vulkan/icd.d/intel_icd.i686.json, version "1.0.0" ERROR: [loader] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_intel.so: cannot open shared object file: No such file or directory INFO: [loader] Code 0 : Found ICD manifest file /etc/vulkan/icd.d/radeon_icd.x86_64.json, version "1.0.0" INFO: [loader] Code 0 : Found ICD manifest file /etc/vulkan/icd.d/radeon_icd.i686.json, version "1.0.0" ERROR: [loader] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_radeon.so: cannot open shared object file: No such file or directory INFO: [loader] Code 0 : Found ICD manifest file /etc/vulkan/icd.d/intel_icd.x86_64.json, version "1.0.0" INFO: [loader] Code 0 : Found ICD manifest file /usr/share/vulkan/icd.d/radeon_icd.x86_64.json, version "1.0.0" INFO: [loader] Code 0 : Found ICD manifest file /usr/share/vulkan/icd.d/intel_icd.x86_64.json, version "1.0.0"

    Instance Extensions:

    Instance Extensions count = 10 VK_KHR_external_memory_capabilities : extension revision 1 VK_KHR_external_semaphore_capabilities: extension revision 1 VK_KHR_get_physical_device_properties2: extension revision 1 VK_KHR_surface : extension revision 25 VK_KHR_wayland_surface : extension revision 6 VK_KHR_xcb_surface : extension revision 6 VK_KHR_xlib_surface : extension revision 6 VK_EXT_debug_report : extension revision 8 VK_KHR_external_fence_capabilities : extension revision 1 VK_KHR_get_surface_capabilities2 : extension revision 1 INTEL-MESA: warning: Ivy Bridge Vulkan support is incomplete INTEL-MESA: warning: Ivy Bridge Vulkan support is incomplete

    Layers: count = 6

    VK_LAYER_GOOGLE_unique_objects (Google Validation Layer) Vulkan version 1.0.61, layer version 1 Layer Extensions count = 0 Devices count = 2 GPU id : 0 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 0 GPU id : 1 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 0

    VK_LAYER_LUNARG_parameter_validation (LunarG Validation Layer) Vulkan version 1.0.61, layer version 1 Layer Extensions count = 1 VK_EXT_debug_report : extension revision 6 Devices count = 2 GPU id : 0 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4 GPU id : 1 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4

    VK_LAYER_GOOGLE_threading (Google Validation Layer) Vulkan version 1.0.61, layer version 1 Layer Extensions count = 1 VK_EXT_debug_report : extension revision 6 Devices count = 2 GPU id : 0 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 0 GPU id : 1 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 0

    VK_LAYER_LUNARG_standard_validation (LunarG Standard Validation) Vulkan version 1.0.61, layer version 1 Layer Extensions count = 1 VK_EXT_debug_report : extension revision 6 Devices count = 2 GPU id : 0 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4 GPU id : 1 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4

    VK_LAYER_LUNARG_object_tracker (LunarG Validation Layer) Vulkan version 1.0.61, layer version 1 Layer Extensions count = 1 VK_EXT_debug_report : extension revision 6 Devices count = 2 GPU id : 0 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4 GPU id : 1 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4

    VK_LAYER_LUNARG_core_validation (LunarG Validation Layer) Vulkan version 1.0.61, layer version 1 Layer Extensions count = 1 VK_EXT_debug_report : extension revision 6 Devices count = 2 GPU id : 0 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4 GPU id : 1 (Intel(R) Ivybridge Mobile) Layer-Device Extensions count = 1 VK_EXT_debug_marker : extension revision 4

    Presentable Surfaces:

    GPU id : 0 (Intel(R) Ivybridge Mobile) Surface type : VK_KHR_xcb_surface Formats: count = 2 B8G8R8A8_SRGB B8G8R8A8_UNORM Present Modes: count = 3 IMMEDIATE_KHR MAILBOX_KHR FIFO_KHR

    VkSurfaceCapabilitiesKHR:

    minImageCount       = 2
    maxImageCount       = 0
    currentExtent:
    	width       = 256
    	height      = 256
    minImageExtent:
    	width       = 256
    	height      = 256
    maxImageExtent:
    	width       = 256
    	height      = 256
    maxImageArrayLayers = 1
    supportedTransform:
    	VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
    currentTransform:
    	VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
    supportedCompositeAlpha:
    	VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
    	VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
    supportedUsageFlags:
    	VK_IMAGE_USAGE_TRANSFER_SRC_BIT
    	VK_IMAGE_USAGE_TRANSFER_DST_BIT
    	VK_IMAGE_USAGE_SAMPLED_BIT
    	VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
    

    GPU id : 1 (Intel(R) Ivybridge Mobile) Surface type : VK_KHR_xcb_surface Formats: count = 2 B8G8R8A8_SRGB B8G8R8A8_UNORM Present Modes: count = 3 IMMEDIATE_KHR MAILBOX_KHR FIFO_KHR

    VkSurfaceCapabilitiesKHR:

    minImageCount       = 2
    maxImageCount       = 0
    currentExtent:
    	width       = 256
    	height      = 256
    minImageExtent:
    	width       = 256
    	height      = 256
    maxImageExtent:
    	width       = 256
    	height      = 256
    maxImageArrayLayers = 1
    supportedTransform:
    	VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
    currentTransform:
    	VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
    supportedCompositeAlpha:
    	VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
    	VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
    supportedUsageFlags:
    	VK_IMAGE_USAGE_TRANSFER_SRC_BIT
    	VK_IMAGE_USAGE_TRANSFER_DST_BIT
    	VK_IMAGE_USAGE_SAMPLED_BIT
    	VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
    

    Device Properties and Extensions :

    GPU0 VkPhysicalDeviceProperties:

    apiVersion     = 0x400039  (1.0.57)
    driverVersion  = 71315555 (0x4403063)
    vendorID       = 0x8086
    deviceID       = 0x0166
    deviceType     = INTEGRATED_GPU
    deviceName     = Intel(R) Ivybridge Mobile
    VkPhysicalDeviceLimits:
    -----------------------
    	maxImageDimension1D                     = 16384
    	maxImageDimension2D                     = 16384
    	maxImageDimension3D                     = 2048
    	maxImageDimensionCube                   = 16384
    	maxImageArrayLayers                     = 2048
    	maxTexelBufferElements                  = 0x8000000
    	maxUniformBufferRange                   = 0x8000000
    	maxStorageBufferRange                   = 0x40000000
    	maxPushConstantsSize                    = 128
    	maxMemoryAllocationCount                = 4294967295
    	maxSamplerAllocationCount               = 65536
    	bufferImageGranularity                  = 0x40
    	sparseAddressSpaceSize                  = 0x0
    	maxBoundDescriptorSets                  = 8
    	maxPerStageDescriptorSamplers           = 16
    	maxPerStageDescriptorUniformBuffers     = 64
    	maxPerStageDescriptorStorageBuffers     = 64
    	maxPerStageDescriptorSampledImages      = 16
    	maxPerStageDescriptorStorageImages      = 64
    	maxPerStageDescriptorInputAttachments   = 64
    	maxPerStageResources                    = 250
    	maxDescriptorSetSamplers                = 256
    	maxDescriptorSetUniformBuffers          = 256
    	maxDescriptorSetUniformBuffersDynamic   = 8
    	maxDescriptorSetStorageBuffers          = 256
    	maxDescriptorSetStorageBuffersDynamic   = 8
    	maxDescriptorSetSampledImages           = 256
    	maxDescriptorSetStorageImages           = 256
    	maxDescriptorSetInputAttachments        = 256
    	maxVertexInputAttributes                = 28
    	maxVertexInputBindings                  = 28
    	maxVertexInputAttributeOffset           = 0x7ff
    	maxVertexInputBindingStride             = 0x800
    	maxVertexOutputComponents               = 128
    	maxTessellationGenerationLevel          = 64
    	maxTessellationPatchSize                        = 32
    	maxTessellationControlPerVertexInputComponents  = 128
    	maxTessellationControlPerVertexOutputComponents = 128
    	maxTessellationControlPerPatchOutputComponents  = 128
    	maxTessellationControlTotalOutputComponents     = 2048
    	maxTessellationEvaluationInputComponents        = 128
    	maxTessellationEvaluationOutputComponents       = 128
    	maxGeometryShaderInvocations            = 32
    	maxGeometryInputComponents              = 64
    	maxGeometryOutputComponents             = 128
    	maxGeometryOutputVertices               = 256
    	maxGeometryTotalOutputComponents        = 1024
    	maxFragmentInputComponents              = 128
    	maxFragmentOutputAttachments            = 8
    	maxFragmentDualSrcAttachments           = 1
    	maxFragmentCombinedOutputResources      = 8
    	maxComputeSharedMemorySize              = 0x8000
    	maxComputeWorkGroupCount[0]             = 65535
    	maxComputeWorkGroupCount[1]             = 65535
    	maxComputeWorkGroupCount[2]             = 65535
    	maxComputeWorkGroupInvocations          = 1024
    	maxComputeWorkGroupSize[0]              = 1024
    	maxComputeWorkGroupSize[1]              = 1024
    	maxComputeWorkGroupSize[2]              = 1024
    	subPixelPrecisionBits                   = 4
    	subTexelPrecisionBits                   = 4
    	mipmapPrecisionBits                     = 4
    	maxDrawIndexedIndexValue                = 4294967295
    	maxDrawIndirectCount                    = 4294967295
    	maxSamplerLodBias                       = 16.000000
    	maxSamplerAnisotropy                    = 16.000000
    	maxViewports                            = 16
    	maxViewportDimensions[0]                = 16384
    	maxViewportDimensions[1]                = 16384
    	viewportBoundsRange[0]                  =-32768.000000
    	viewportBoundsRange[1]                  = 32767.000000
    	viewportSubPixelBits                    = 13
    	minMemoryMapAlignment                   = 4096
    	minTexelBufferOffsetAlignment           = 0x1
    	minUniformBufferOffsetAlignment         = 0x10
    	minStorageBufferOffsetAlignment         = 0x4
    	minTexelOffset                          = -8
    	maxTexelOffset                          =  7
    	minTexelGatherOffset                    =-32
    	maxTexelGatherOffset                    = 31
    	minInterpolationOffset                  =-0.500000
    	maxInterpolationOffset                  = 0.437500
    	subPixelInterpolationOffsetBits         = 4
    	maxFramebufferWidth                     = 16384
    	maxFramebufferHeight                    = 16384
    	maxFramebufferLayers                    = 2048
    	framebufferColorSampleCounts            = 13
    	framebufferDepthSampleCounts            = 13
    	framebufferStencilSampleCounts          = 13
    	framebufferNoAttachmentsSampleCounts    = 13
    	maxColorAttachments                     = 8
    	sampledImageColorSampleCounts           = 13
    	sampledImageDepthSampleCounts           = 13
    	sampledImageStencilSampleCounts         = 13
    	sampledImageIntegerSampleCounts         = 1
    	storageImageSampleCounts                = 1
    	maxSampleMaskWords                      = 1
    	timestampComputeAndGraphics             = 0
    	timestampPeriod                         = 80.000000
    	maxClipDistances                        = 8
    	maxCullDistances                        = 8
    	maxCombinedClipAndCullDistances         = 8
    	discreteQueuePriorities                 = 1
    	pointSizeRange[0]                       = 0.125000
    	pointSizeRange[1]                       = 255.875000
    	lineWidthRange[0]                       = 0.000000
    	lineWidthRange[1]                       = 7.992188
    	pointSizeGranularity                    = 0.125000
    	lineWidthGranularity                    = 0.007812
    	strictLines                             = 0
    	standardSampleLocations                 = 1
    	optimalBufferCopyOffsetAlignment        = 0x80
    	optimalBufferCopyRowPitchAlignment      = 0x80
    	nonCoherentAtomSize                     = 0x40
    VkPhysicalDeviceSparseProperties:
    ---------------------------------
    	residencyStandard2DBlockShape            = 0
    	residencyStandard2DMultisampleBlockShape = 0
    	residencyStandard3DBlockShape            = 0
    	residencyAlignedMipSize                  = 0
    	residencyNonResidentStrict               = 0
    

    Device Extensions count = 23 VK_KHR_bind_memory2 : extension revision 1 VK_KHR_dedicated_allocation : extension revision 1 VK_KHR_descriptor_update_template : extension revision 1 VK_KHR_external_fence : extension revision 1 VK_KHR_external_fence_fd : extension revision 1 VK_KHR_external_memory : extension revision 1 VK_KHR_external_memory_fd : extension revision 1 VK_KHR_external_semaphore : extension revision 1 VK_KHR_external_semaphore_fd : extension revision 1 VK_KHR_get_memory_requirements2 : extension revision 1 VK_KHR_image_format_list : extension revision 1 VK_KHR_incremental_present : extension revision 1 VK_KHR_maintenance1 : extension revision 1 VK_KHR_maintenance2 : extension revision 1 VK_KHR_push_descriptor : extension revision 1 VK_KHR_relaxed_block_layout : extension revision 1 VK_KHR_sampler_mirror_clamp_to_edge : extension revision 1 VK_KHR_sampler_ycbcr_conversion : extension revision 1 VK_KHR_shader_draw_parameters : extension revision 1 VK_KHR_storage_buffer_storage_class : extension revision 1 VK_KHR_swapchain : extension revision 68 VK_KHR_variable_pointers : extension revision 1 VK_KHX_multiview : extension revision 1

    VkQueueFamilyProperties[0]:

    queueFlags         = GRAPHICS | COMPUTE | TRANSFER
    queueCount         = 1
    timestampValidBits = 36
    minImageTransferGranularity = (1, 1, 1)
    

    VkPhysicalDeviceMemoryProperties:

    memoryTypeCount       = 1
    memoryTypes[0] :
    	heapIndex     = 0
    	propertyFlags = 0xf:
    		VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
    		VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
    		VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
    		VK_MEMORY_PROPERTY_HOST_CACHED_BIT
    
    memoryHeapCount       = 1
    memoryHeaps[0] :
    	size          = 1610612736 (0x60000000) (1.50 GiB)
    	flags:
    		VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
    

    VkPhysicalDeviceFeatures:

    robustBufferAccess                      = 1
    fullDrawIndexUint32                     = 1
    imageCubeArray                          = 1
    independentBlend                        = 1
    geometryShader                          = 1
    tessellationShader                      = 1
    sampleRateShading                       = 1
    dualSrcBlend                            = 1
    logicOp                                 = 1
    multiDrawIndirect                       = 1
    drawIndirectFirstInstance               = 1
    depthClamp                              = 1
    depthBiasClamp                          = 1
    fillModeNonSolid                        = 1
    depthBounds                             = 0
    wideLines                               = 1
    largePoints                             = 1
    alphaToOne                              = 1
    multiViewport                           = 1
    samplerAnisotropy                       = 1
    textureCompressionETC2                  = 0
    textureCompressionASTC_LDR              = 0
    textureCompressionBC                    = 1
    occlusionQueryPrecise                   = 1
    pipelineStatisticsQuery                 = 1
    vertexPipelineStoresAndAtomics          = 0
    fragmentStoresAndAtomics                = 1
    shaderTessellationAndGeometryPointSize  = 1
    shaderImageGatherExtended               = 1
    shaderStorageImageExtendedFormats       = 1
    shaderStorageImageMultisample           = 0
    shaderStorageImageReadWithoutFormat     = 0
    shaderStorageImageWriteWithoutFormat    = 1
    shaderUniformBufferArrayDynamicIndexing = 1
    shaderSampledImageArrayDynamicIndexing  = 1
    shaderStorageBufferArrayDynamicIndexing = 1
    shaderStorageImageArrayDynamicIndexing  = 1
    shaderClipDistance                      = 1
    shaderCullDistance                      = 1
    shaderFloat64                           = 0
    shaderInt64                             = 0
    shaderInt16                             = 0
    shaderResourceResidency                 = 0
    shaderResourceMinLod                    = 0
    sparseBinding                           = 0
    sparseResidencyBuffer                   = 0
    sparseResidencyImage2D                  = 0
    sparseResidencyImage3D                  = 0
    sparseResidency2Samples                 = 0
    sparseResidency4Samples                 = 0
    sparseResidency8Samples                 = 0
    sparseResidency16Samples                = 0
    sparseResidencyAliased                  = 0
    variableMultisampleRate                 = 0
    inheritedQueries                        = 1
    
    opened by Spektykles 16
  • couldn't load gfx.wad Ubuntu

    couldn't load gfx.wad Ubuntu

    I just git cloned vkquake and compiled it on Ubuntu and I can't run it because it couldn't load "gfx.wad" is it missing or did something go wrong? nothing in the make logs show any errors.

    opened by coreybruce 15
  • Handle CSQC crashes

    Handle CSQC crashes

    As per discussion here https://github.com/Novum/vkQuake/commit/a9cc376f0d191ed63d6671ba3a539f8fea3089ee:

    Well, if Host_Error () was reached the longjmp was happening one way or another (with tasks, it'd crash; without it'd hang). This is hit if you create an Arcane Dimensions deathmatch game from the menu (e.g. vkQuake -game ad +deathmatch 1 +viewsize 100 +map start)

    The longjmp solution right now is not going to work with tasks, need to find a better way

    bug 
    opened by Novum 0
  • Shader issue on macOS

    Shader issue on macOS

    I'm getting the following issue after compiling and running on macOS:

    Command line: ./vkquake -basedir /Users/ethertyper/Downloads/QuakePAKs/
    Found SDL version 2.0.22
    Detected 8 CPUs.
    Built with Clang 13.1.6 (clang-1316.0.21.2.5)
    Quake 1.09 (c) id Software
    GLQuake 1.00 (c) id Software
    FitzQuake 0.85 (c) John Fitzgibbons
    FitzQuake SDL port (c) SleepwalkR, Baker
    QuakeSpasm 0.94.5 (c) Ozkan Sezer, Eric Wasylishen & others
    QuakeSpasm-Spiked (c) Spike
    vkQuake 1.20.0 (c) Axel Gneiting & others
    Host_Init
    Playing registered version.
    Console initialized.
    UDP_Init: skipping gethostbyname for Elis-MacBook-Pro.local
    UDP4 Initialized
    UDPv6 Initialized
    Server using protocol 999+ (FTE-RMQ)
    Exe: 02:27:02 Jun 24 2022
    384.0 megabyte heap
    
    Vulkan Initialization
    Using Vulkan 1.1
    [mvk-info] MoltenVK version 1.1.10, supporting Vulkan version 1.1.216.
    	The following 78 Vulkan extensions are supported:
    		VK_KHR_16bit_storage v1
    		VK_KHR_8bit_storage v1
    		VK_KHR_bind_memory2 v1
    		VK_KHR_create_renderpass2 v1
    		VK_KHR_dedicated_allocation v3
    		VK_KHR_depth_stencil_resolve v1
    		VK_KHR_descriptor_update_template v1
    		VK_KHR_device_group v4
    		VK_KHR_device_group_creation v1
    		VK_KHR_driver_properties v1
    		VK_KHR_dynamic_rendering v1
    		VK_KHR_external_fence v1
    		VK_KHR_external_fence_capabilities v1
    		VK_KHR_external_memory v1
    		VK_KHR_external_memory_capabilities v1
    		VK_KHR_external_semaphore v1
    		VK_KHR_external_semaphore_capabilities v1
    		VK_KHR_fragment_shader_barycentric v1
    		VK_KHR_get_memory_requirements2 v1
    		VK_KHR_get_physical_device_properties2 v2
    		VK_KHR_get_surface_capabilities2 v1
    		VK_KHR_imageless_framebuffer v1
    		VK_KHR_image_format_list v1
    		VK_KHR_maintenance1 v2
    		VK_KHR_maintenance2 v1
    		VK_KHR_maintenance3 v1
    		VK_KHR_multiview v1
    		VK_KHR_portability_subset v1
    		VK_KHR_push_descriptor v2
    		VK_KHR_relaxed_block_layout v1
    		VK_KHR_sampler_mirror_clamp_to_edge v3
    		VK_KHR_sampler_ycbcr_conversion v14
    		VK_KHR_separate_depth_stencil_layouts v1
    		VK_KHR_shader_draw_parameters v1
    		VK_KHR_shader_float16_int8 v1
    		VK_KHR_shader_subgroup_extended_types v1
    		VK_KHR_storage_buffer_storage_class v1
    		VK_KHR_surface v25
    		VK_KHR_swapchain v70
    		VK_KHR_swapchain_mutable_format v1
    		VK_KHR_timeline_semaphore v2
    		VK_KHR_uniform_buffer_standard_layout v1
    		VK_KHR_variable_pointers v1
    		VK_EXT_debug_marker v4
    		VK_EXT_debug_report v10
    		VK_EXT_debug_utils v2
    		VK_EXT_descriptor_indexing v2
    		VK_EXT_fragment_shader_interlock v1
    		VK_EXT_hdr_metadata v2
    		VK_EXT_host_query_reset v1
    		VK_EXT_image_robustness v1
    		VK_EXT_inline_uniform_block v1
    		VK_EXT_memory_budget v1
    		VK_EXT_metal_surface v1
    		VK_EXT_post_depth_coverage v1
    		VK_EXT_private_data v1
    		VK_EXT_robustness2 v1
    		VK_EXT_sample_locations v1
    		VK_EXT_scalar_block_layout v1
    		VK_EXT_separate_stencil_usage v1
    		VK_EXT_shader_stencil_export v1
    		VK_EXT_shader_viewport_index_layer v1
    		VK_EXT_subgroup_size_control v2
    		VK_EXT_swapchain_colorspace v4
    		VK_EXT_texel_buffer_alignment v1
    		VK_EXT_texture_compression_astc_hdr v1
    		VK_EXT_vertex_attribute_divisor v3
    		VK_AMD_gpu_shader_half_float v2
    		VK_AMD_negative_viewport_height v1
    		VK_AMD_shader_image_load_store_lod v1
    		VK_AMD_shader_trinary_minmax v1
    		VK_IMG_format_pvrtc v1
    		VK_INTEL_shader_integer_functions2 v1
    		VK_GOOGLE_display_timing v1
    		VK_MVK_macos_surface v3
    		VK_MVK_moltenvk v34
    		VK_NV_fragment_shader_barycentric v1
    		VK_NV_glsl_shader v1
    [mvk-info] GPU device:
    		model: Intel(R) Iris(TM) Plus Graphics 655
    		type: Integrated
    		vendorID: 0x8086
    		deviceID: 0x3ea5
    		pipelineCacheUUID: 0000277E-0C03-07D2-0000-000000000000
    	supports the following Metal Versions, GPU's and Feature Sets:
    		Metal Shading Language 2.4
    		GPU Family Mac 2
    		GPU Family Mac 1
    		GPU Family Common 3
    		GPU Family Common 2
    		GPU Family Common 1
    		macOS GPU Family 2 v1
    		macOS GPU Family 1 v4
    		macOS GPU Family 1 v3
    		macOS GPU Family 1 v2
    		macOS GPU Family 1 v1
    [mvk-info] Created VkInstance for Vulkan version 1.1.0, as requested by app, with the following 4 Vulkan extensions enabled:
    		VK_KHR_get_physical_device_properties2 v2
    		VK_KHR_get_surface_capabilities2 v1
    		VK_KHR_surface v25
    		VK_MVK_macos_surface v3
    Using VK_KHR_surface
    Using VK_MVK_macos_surface
    Using VK_KHR_get_surface_capabilities2
    Using VK_KHR_get_physical_device_properties2
    Vendor: Intel
    Device: Intel(R) Iris(TM) Plus Graphics 655
    Using subgroup operations
    [mvk-info] Using MTLEvent for Vulkan semaphores.
    [mvk-info] Created VkDevice to run on GPU Intel(R) Iris(TM) Plus Graphics 655 with the following 4 Vulkan extensions enabled:
    		VK_KHR_dedicated_allocation v3
    		VK_KHR_get_memory_requirements2 v1
    		VK_KHR_swapchain v70
    		VK_EXT_subgroup_size_control v2
    Using VK_KHR_swapchain
    Using VK_KHR_get_memory_requirements2
    Using VK_KHR_dedicated_allocation
    Using VK_EXT_subgroup_size_control
    Using A2B10G10R10 color buffer format
    Using D32_S8 depth buffer format
    Creating command buffers
    Initializing staging
    Creating descriptor set layouts
    Reallocating dynamic VBs (256 KB)
    Reallocating dynamic IBs (1024 KB)
    Reallocating dynamic UBs (256 KB)
    Initializing samplers
    Texture lod bias: 0.000000
    Creating pipeline layouts
    Using IMMEDIATE present mode
    [mvk-info] Created 2 swapchain images with initial size (1440, 736).
    Creating color buffer
    AA disabled
    Creating depth buffer
    Creating render passes
    Creating frame buffers
    Creating pipelines
    [mvk-error] VK_ERROR_INITIALIZATION_FAILED: Shader library compile failed (Error code 3):
    program_source:106:16: error: use of undeclared identifier '_349'; did you mean '_363'?
            _363 = _349;
                   ^~~~
                   _363
    program_source:45:12: note: '_363' declared here
        float4 _363;
               ^
    .
    [mvk-error] VK_ERROR_INVALID_SHADER_NV: Compute shader function could not be compiled into pipeline. See previous logged error.
    
    ERROR-OUT BEGIN
    
    
    QUAKE ERROR: vkCreateComputePipelines failed
    

    Using git bisect, I found the issue was introduced in cdbc580285220535e5add3944a30aca04dc9af84 and b5151026846516ccf958cf618d50b4b35d9a92de, as the program fails to run due to shader issues on cdbc580285220535e5add3944a30aca04dc9af84 but runs properly on de692b2df1bd909502a65ce47d89a0d92062eb83.

    bug help wanted 
    opened by EtherTyper 2
  • [Feature request] OpenAL Soft

    [Feature request] OpenAL Soft

    Any chance of implementing this? The current audio capabilities inherited from QS have some issues.

    1. Handling of mixed sample rates is not optimal. You can only configure it in two ways, to down-sample(default), which mutes the top end of ~~all~~ EDIT:some sounds, or up-sample with very audible aliasing distortion.

    2. Makes surround audio over normal headphones possible, which is a pretty good fit for Quakes gameplay. Here's an example if you want to see what it's about: https://youtu.be/rc5a7dzRvbY?t=25

    question 
    opened by markanini 6
  • Alkaline map pack compatibility

    Alkaline map pack compatibility

    Probably just a nitpicking but when map is finished in Alkaline map pack, its entry portal in start map hub should turn blue (as in QS, QSS, Ironwail). Also should display text [Completed] when you approach the portal again. But when the map is finished in vkQuake its portal stays orange as if nothing happened. Save game just before a map exit is below, its portal will be in front of player in start map hub. s0.zip

    bug 
    opened by dezo2 8
  • Feature request: Don't create subfolders when trying to run a nonexistent game

    Feature request: Don't create subfolders when trying to run a nonexistent game

    Currently vkQuake creates subfolders together with corresponding config.cfg files inside the Quake directory when trying to run a nonexistent game or mod. I consider this to be an issue, as we all sometimes make typos when launching the game from CLI and that adds in work to clean up the Quake directory. On top of this, I see no benefits to this (although I may be wrong). As such, I suggest removing this behaviour.

    enhancement 
    opened by Vagankovo 1
Releases(1.13.1)
  • 1.13.1(May 16, 2022)

    • GUI scale is now relative to screen height (scr_relativescale 0 to disable)
    • Crosshair is now selectable from menu. Also added the option to use a dot instead of cross crosshair.
    • Improved compatibility with latest Quake Steam re-release version
    • Fixed unlit maps with GPU lightmap updates
    • Reverted improper fix for rogue lavamen that caused lots of other issues
    • Various smaller bug fixes
    • Update to SDL 2.0.22

    Windows binaries require the Microsoft Visual C++ Redistributable: https://aka.ms/vs/17/release/vc_redist.x86.exe (32 bit) https://aka.ms/vs/17/release/vc_redist.x64.exe (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.13.1_linux64.tar.gz(1.82 MB)
    vkquake-1.13.1_win32.zip(1.73 MB)
    vkquake-1.13.1_win64.zip(1.94 MB)
  • 1.13.0(Mar 27, 2022)

    • GPU lightmap update and smooth dynamic light interpolation
    • Various bug fixes
    • Improved compatibility with 2021 Quake re-release

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Windows binaries require the Microsoft Visual C++ Redistributable: https://aka.ms/vs/17/release/vc_redist.x86.exe (32 bit) https://aka.ms/vs/17/release/vc_redist.x64.exe (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.13.0_linux64.tar.gz(1.83 MB)
    vkquake-1.13.0_win32.zip(1.72 MB)
    vkquake-1.13.0_win64.zip(1.93 MB)
  • 1.12.2(Dec 22, 2021)

    • Improved compatibility with the 2021 Quake re-release
    • Various bug fixes
    • Small performance improvements
    • Improved support for non power of two textures
    • Updated SDL to 2.0.18

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Windows binaries require the Microsoft Visual C++ Redistributable: https://aka.ms/vs/17/release/vc_redist.x86.exe (32 bit) https://aka.ms/vs/17/release/vc_redist.x64.exe (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.12.2_linux64.tar.gz(1.82 MB)
    vkquake-1.12.2_win32.zip(1.59 MB)
    vkquake-1.12.2_win64.zip(1.80 MB)
  • 1.12.1(Nov 26, 2021)

    • Support for scriptable particles ported from QuakeSpasm-Spiked (e.g. for Arcane Dimensions). For vanilla particles set r_fteparticles 0.
    • Improved physics consistency between different frame rates
    • Fixed bug in 1.12.0 that prevented Alkaline alk_dancing from loading.
    • Slight improvements to texture sharpness with supersampling or res scale.

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Windows binaries require the Microsoft Visual C++ Redistributable: https://aka.ms/vs/17/release/vc_redist.x86.exe (32 bit) https://aka.ms/vs/17/release/vc_redist.x64.exe (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.12.1_linux64.tar.gz(1.76 MB)
    vkquake-1.12.1_win32.zip(1.48 MB)
    vkquake-1.12.1_win64.zip(1.68 MB)
  • 1.11.1(Oct 25, 2021)

    • Improved compatibility with 2021 Quake re-release thanks to @sezero and @andrei-drexler.

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.
    • Slight improvements to texture sharpness with supersampling or res scale.

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.11.1_linux64.tar.gz(1.61 MB)
    vkquake-1.11.1_win32.zip(1.44 MB)
    vkquake-1.11.1_win64.zip(1.63 MB)
  • 1.11.0(Sep 2, 2021)

    • Initial support for Quake 2021 re-release
    • External vis file support
    • Guns now use a different FOV to avoid stretched weapons (disable with cl_gun_fovscale 0)

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.11.0_linux64.tar.gz(1.61 MB)
    vkquake-1.11.0_win32.zip(1.44 MB)
    vkquake-1.11.0_win64.zip(1.63 MB)
  • 1.10.0-beta3(Jul 8, 2021)

    Note: This is a beta/preview release because of the large amount of changes

    • Merged protocol extensions from QuakeSpasm-Spiked. This fixes non smooth movement on elevators in certain cases.
    • Custom HUD client side QuakeC support for Arcane Dimensions (disable with cl_nocsqc 1)
    • SIMD CPU optimizations from Andrei Drexler - especially helpful in complex levels like ad_tears
    • Stencil buffer optimizations for sky rendering reducing overdraw
    • Resolution scaling to 1/2 1/4 or 1/8th resolution
    • Added support for r_fullbright & r_lightmap
    • Implemented full r_showtris support
    • Option in menu to set max frame rate
    • Higher precision game time and precise frame rate throttling
    • Fix exclusive full screen alt+tab issues
    • Bumped default heap size to 384MB

    Changes from beta1:

    • Fixed potential issue with Intel GPUs and render scale
    • Renamed "filter" to "textures" in menu to make it more clear what the option does.
    • Fixed missing gun icons in HUD

    Changes from beta2:

    • Fixes ambient sounds
    • Multiple memory corruption fixes
    • Fix compatibility with some mods

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Linux AppImage requires at least glibc 2.14. Check with ldd --version if in doubt (any recent Linux distribution should easily satisfy this). FUSE must be enabled and available (see https://docs.appimage.org/user-guide/troubleshooting/fuse.html)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.10.0-beta3_linux64.tar(2.12 MB)
    vkquake-1.10.0-beta3_win32.zip(1.43 MB)
    vkquake-1.10.0-beta3_win64.zip(1.61 MB)
  • 1.10.0-beta2(Jul 2, 2021)

    Note: This is a beta/preview release because of the large amount of changes

    • Merged protocol extensions from QuakeSpasm-Spiked. This fixes non smooth movement on elevators in certain cases.
    • Custom HUD client side QuakeC support for Arcane Dimensions (disable with cl_nocsqc 1)
    • SIMD CPU optimizations from Andrei Drexler - especially helpful in complex levels like ad_tears
    • Stencil buffer optimizations for sky rendering reducing overdraw
    • Resolution scaling to 1/2 1/4 or 1/8th resolution
    • Added support for r_fullbright & r_lightmap
    • Implemented full r_showtris support
    • Option in menu to set max frame rate
    • Higher precision game time and precise frame rate throttling
    • Fix exclusive full screen alt+tab issues
    • Bumped default heap size to 384MB

    Changes from beta1:

    • Fixed potential issue with Intel GPUs and render scale
    • Renamed "filter" to "textures" in menu to make it more clear what the option does.
    • Fixed missing gun icons in HUD

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.10.0-beta2_win32.zip(1.43 MB)
    vkquake-1.10.0-beta2_win64.zip(1.61 MB)
  • 1.10.0-beta1(Jun 26, 2021)

    Note: This is a beta/preview release because of the large amount of changes

    • Merged protocol extensions from QuakeSpasm-Spiked. This fixes non smooth movement on elevators in certain cases.
    • Custom HUD client side QuakeC support for Arcane Dimensions (disable with cl_nocsqc 1)
    • SIMD CPU optimizations from Andrei Drexler - especially helpful in complex levels like ad_tears
    • Stencil buffer optimizations for sky rendering reducing overdraw
    • Resolution scaling to 1/2 1/4 or 1/8th resolution
    • Added support for r_fullbright & r_lightmap
    • Implemented full r_showtris support
    • Option in menu to set max frame rate
    • Higher precision game time and precise frame rate throttling
    • Fix exclusive full screen alt+tab issues
    • Bumped default heap size to 384MB

    Known issues:

    • Some entities don't animate smoothly with FTE protocol extensions. cl_nopext 1 is a workaround right now. Same bug exists in QSS.

    Binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.10.0-beta1_win32.zip(1.42 MB)
    vkquake-1.10.0-beta1_win64.zip(1.61 MB)
  • 1.05.3(May 31, 2021)

  • 1.05.2(Jan 11, 2021)

  • 1.05.1(Nov 3, 2020)

  • 1.05.0(Oct 29, 2020)

    • Workaround for crash when loading ad_tears map multiple times (Arcane Dimensions 1.8)
      • There is no fixed upper limit of mesh and texture heaps anymore
    • Use VK_EXT_full_screen_exclusive if available
    • Performance optimizations
    • Vulkan fixes related to push constants

    Binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.05.0_win32.zip(1.22 MB)
    vkquake-1.05.0_win64.zip(1.41 MB)
  • 1.04.1(Jan 15, 2020)

  • 1.04.0(Dec 19, 2019)

    • Particles are now rendered as quads instead of triangles by default (r_quadparticles) like in QuakeSpasm. Fixes visible triangles in some mods.
    • Fix alpha tested geo not testing depth
    • Fix issue where wrong push constants were being set if render size is smaller than window
    • Fixed certain UI elementes being rendered with alpha blending instead of alpha testing like in QS
    • Fix issue with Intel GPUs crashing when leaving full screen
    • As always, updated to latest QuakeSpasm code

    Binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.04.0_win32.zip(1.21 MB)
    vkquake-1.04.0_win64.zip(1.41 MB)
  • 1.03.0(Nov 9, 2019)

  • 1.02.1(Jun 16, 2019)

    • Frame rates over 72 Hz don't break physics anymore (from QuakeSpasm spiked)
    • Default maximum frame rate raised to 200 Hz.
    • Fix crashes with some Intel drivers and anti aliasing
    • Fix crash "out of dynamic vertex buffer space" in some very large custom maps
    • Fix gun position being different than in QuakeSpasm when status bar alpha is 0
    • Other minor Vulkan fixes

    Binaries require the Visual C++ Redistributable for Visual Studio 2019: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-1.02.1_win32.zip(1.20 MB)
    vkquake-1.02.1_win64.zip(1.39 MB)
  • 1.01.0(Jan 3, 2019)

  • 1.00.0(Jun 12, 2018)

  • 0.97.3(Dec 31, 2017)

  • 0.97.2(Dec 9, 2017)

  • 0.97.1(Dec 1, 2017)

    • All remaining fixes from QuakeSpasm 0.93
    • Better fix for Alt+Tab problem with NVIDIA
    • Fixed issue where objects could be seen behind sky (e.g. at the start of E4M7)
    • Fixed some Vulkan resource leaks

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2017: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.97.1_win32.zip(1.14 MB)
    vkquake-0.97.1_win64.zip(1.28 MB)
  • 0.97.0(Nov 16, 2017)

    • Fixed crash with newer NVIDIA drivers when tabbing in and out of fullscreen
    • All changes up to latest QuakeSpasm 0.93 RC
    • Use VK_KHR_dedicated_allocation if available
    • Use pipeline derivatives for world pipelines

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2017: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.97.0_win32.zip(1.14 MB)
    vkquake-0.97.0_win64.zip(1.28 MB)
  • 0.96.2(Jun 20, 2017)

    • Fix for AMD hang

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2017: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Linux users:

    The Linux binary contains a file named "vkquake.readme," detailing use of the application. This was compiled and linked on Debian Jessie (8.x)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.96.2_linux_64.tar.gz(6.96 MB)
    vkquake-0.96.2_win32.zip(1.11 MB)
    vkquake-0.96.2_win64.zip(1.25 MB)
  • 0.96.1(Jun 18, 2017)

    • Bump limits for Arcane Dimensions 1.60 (ad_sepulcher)
    • Fix for broken dynamic lights since version 0.92
    • Add fence between command buffer completion and present (required by Vulkan spec)
    • Potential optimization for some drivers: Mark command buffers as VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2017: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.96.1_win32.zip(1.11 MB)
    vkquake-0.96.1_win64.zip(1.25 MB)
  • 0.96(Jun 11, 2017)

    • Option to select number of samples for anti-aliasing
    • Workaround for crash on Intel HD graphics on Windows when enabling anti-aliasing
    • Fixed running out of staging memory in certain big maps
    • Update to latest QuakeSpasm code
    • Vulkan device can now be selected from command line (-device)
    • Minor fixes for Vulkan conformance

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2017: https://go.microsoft.com/fwlink/?LinkId=746571 (32 bit) https://go.microsoft.com/fwlink/?LinkId=746572 (64 bit)

    Linux users:

    The Linux binary contains a file named "vkquake.readme," detailing use of the application. This was compiled and linked on Debian Jessie (8.x)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.96.0_linux_64.tar.gz(6.96 MB)
    vkquake-0.96.0_win32.zip(1.09 MB)
    vkquake-0.96.0_win64.zip(1.22 MB)
  • 0.95(Mar 14, 2017)

    • Update to latest QuakeSpasm code
    • vkQuake will now use 10 bit color buffers if the device supports it to reduce banding in dark areas
    • Fixes not being able to select "Supersampling" in settings by pressing return
    • Fixes slightly invalid API usage
    • Fixes uninitialized memory when writing a descriptor set (reported by Arda Coskunses)

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2015: https://www.microsoft.com/en-us/download/details.aspx?id=48145

    Linux users:

    The Linux binary contains a file named "vkquake.readme," detailing use of the application. This was compiled and linked on Debian Jessie (8.x)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.95.0_linux_64.tar.gz(6.96 MB)
    vkquake-0.95.0_win32.zip(1.09 MB)
    vkquake-0.95.0_win64.zip(1.22 MB)
  • 0.94(Jan 11, 2017)

    • Support for supersampling (sample frequency shading) on devices that support it

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2015: https://www.microsoft.com/en-us/download/details.aspx?id=48145

    Linux users:

    The Linux binary contains a file named "vkquake.readme," detailing use of the application. This was compiled and linked on Debian Jessie (8.x)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.94.0_linux_64.tar.gz(6.94 MB)
    vkquake-0.94.0_win32.zip(1.44 MB)
    vkquake-0.94.0_win64.zip(1.47 MB)
  • 0.93(Dec 15, 2016)

    • Fix alpha blended world surfaces (e.g. AD "Terror Fuma" missing transparent windows)

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2015: https://www.microsoft.com/en-us/download/details.aspx?id=48145

    Linux users:

    The Linux binary contains a file named "vkquake.readme," detailing use of the application. This was compiled and linked on Debian Jessie (8.x)

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.93.0_linux_64.tar.gz(6.95 MB)
    vkquake-0.93.0_win32.zip(1.46 MB)
    vkquake-0.93.0_win64.zip(1.61 MB)
  • 0.92(Dec 10, 2016)

    • Make underwater effect aware of aspect ratio
    • Implemented "screenshot" command

    Windows users:

    Windows binaries require the Visual C++ Redistributable for Visual Studio 2015: https://www.microsoft.com/en-us/download/details.aspx?id=48145

    Linux users:

    The Linux binary contains a file named "vkquake.readme," detailing use of the application. This was compiled and linked on Debian Jessie (8.x).

    Source code(tar.gz)
    Source code(zip)
    vkquake-0.92.0_linux_64.tar.gz(6.94 MB)
    vkquake-0.92.0_win32.zip(1.46 MB)
    vkquake-0.92.0_win64.zip(1.61 MB)
Owner
Axel Gneiting
Axel Gneiting
ORE (OpenGL Rendering Engine) is a rendering engine developed for my college minor project assessment.

ORE (OPENGL RENDERING ENGINE) What is ORE? ORE(OpenGL Rendering Engine) is a rendering engine with great and easy to use UI that allows the user to lo

HARSHIT BARGUJAR 4 Dec 20, 2021
OpenGL®-Starter is a template for your upcoming OpenGL Projects which has been compiled to run the most basic Hello World OpenGL Program from LearnOpenGL.com.

OpenGL®-Starter OpenGL®-Starter is a template for your upcoming OpenGL Projects which has been compiled to run the most basic Hello World OpenGL Progr

Kushagra 8 May 27, 2022
This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX

Apress Source Code This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX by Adam Marrs, Peter Shirley

Apress 635 Jun 21, 2022
Vulkan Minimal Hybrid Rendering

Vulkan Minimal Hybrid Rendering A minimal hybrid rendering sample using ray query Features Rasterization Raytraced shadow Environment Vulkan SDK 1.2.1

Yuki Nishidate 7 Aug 16, 2021
Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal

Low Level Graphics Library (LLGL) Documentation NOTE: This repository receives bug fixes only, but no major updates. Pull requests may still be accept

Lukas Hermanns 1.4k Jun 19, 2022
OBS Linux Vulkan/OpenGL game capture

OBS Linux Vulkan/OpenGL game capture OBS plugin for Vulkan/OpenGL game capture on Linux. Requires OBS with EGL support (currently unreleased, you need

David Rosca 178 Jun 19, 2022
C++/openGL/Vulkan 3D engine

DeusEx Machina engine C++/GL/Vulkan 3D graphic engine First commit, hello world! :D Reddit post about why I started with skeletal animation system and

Brais 41 May 19, 2022
Legion Low Level Rendering Interface provides a graphics API agnostic rendering interface with minimal CPU overhead and low level access to verbose GPU operations.

Legion-LLRI Legion-LLRI, or “Legion Low Level Rendering Interface” is a rendering API that aims to provide a graphics API agnostic approach to graphic

Rythe Interactive 25 Mar 8, 2022
Vire is a C++ voxel rendering engine. It is written in C++14 and uses OpenGL for graphics.

Vire Vire is a C++ voxel rendering engine. It is written in C++14 and uses OpenGL for graphics. Downloads If you'd just like to just download and try,

null 35 Jun 25, 2022
A legacy OpenGL simulator for OpenGL 4.4, written in C++.

the-ancient-tri A legacy OpenGL simulator for OpenGL 4.4, written in C++. Why? My Uni forces us to use legacy OpenGL (eww!), and I didn't want to lear

Mohammad Issawi 4 Feb 10, 2022
Quake GPL Source Release

This is the complete source code for winquake, glquake, quakeworld, and glquakeworld. The projects have been tested with visual C++ 6.0, but masm is

id Software 3.7k Jun 28, 2022
Quake 2 GPL Source Release

This is the complete source code for Quake 2, version 3.19, buildable with visual C++ 6.0. The linux version should be buildable, but we haven't test

id Software 2.1k Jun 27, 2022
Minimal pathtracer using Vulkan RayTracing

Single File Vulkan Pathtracing Minimal pathtracer using Vulkan RayTracing Environment Vulkan SDK 1.2.162.0 GPU / Driver that support Vulkan Ray Tracin

Yuki Nishidate 25 May 8, 2022
A toy renderer written in C using Vulkan to perform real-time ray tracing research.

This is a toy renderer written in C using Vulkan. It is intentionally minimalist. It has been developed and used for the papers "BRDF Importance Sampl

Christoph Peters 250 Jun 27, 2022
simple fdtd using vulkan, omp or single thread

fdtd simple fdtd using vulkan, omp or single thread example how to build first clone the repo with: git clone https://github.com/nikisalli/fdtd.git up

Nik 3 Feb 14, 2022
Implementation of Peter Shirley's Ray Tracing In One Weekend book using Vulkan and NVIDIA's RTX extension.

Ray Tracing In Vulkan My implementation of Peter Shirley's Ray Tracing in One Weekend books using Vulkan and NVIDIA's RTX extension (formerly VK_NV_ra

Tanguy Fautre 764 Jun 25, 2022
A rendering sample that demonstrates bindless deferred texturing using D3D12

Bindless Deferred Texturing and Decals Sample This project is a D3D12 rendering sample that implements a deferred renderer using bindless deferred tex

MJP 331 Jun 27, 2022
基于 Vulkan 实现的 GPUImage

Vulkan-GPUImage 基于 Vulkan 渲染的 GPUImage 版本,实现渲染链机制,复刻 GPUImage 上的多个效果(逐渐增加中)。 更多技术实现,详见源码~~ Vulkan 学习文章 进击的 Vulkan 移动开发(一)之今生前世 进击的 Vulkan 移动开发之 Instan

glumes 135 Jun 8, 2022
Vulkan physically based raytracer including denoising

VulkanPBRT Vulkan physically based raytracer including denoising. The GPU raytracer is based on Vulkan only, as well as for the denoising only the Vul

null 15 May 26, 2022