100 Commits
Author SHA1 Message Date
Vladislav Belov a7967d4ad9 Adds PBR output texture to PostProc 2026-04-29 19:25:14 +02:00
Vladislav Belov 25df2d8a02 Adds resolve PBR compute shader
Also fixes sky shader as it was writing negative values for -Y
direction.
2026-04-29 19:25:12 +02:00
Vladislav Belov 1a277269d3 Adds floating point textures to backends
R8G8B8A8_UNORM isn't enough to store HDR data as the scene can brighter
than 1.0 especially when looking into sun speculars.
2026-04-29 19:25:11 +02:00
Vladislav Belov c4fb0eed3a Adds slider to developer overlay
Also adds PBR config values. Refs #8535
2026-04-29 19:25:03 +02:00
Vladislav Belov 456e2a0b56 Removes dummy GL functions as replaced by core 2026-04-25 17:47:06 +02:00
Vladislav Belov 9b79fb3793 Fixes particle solid axes after aae957ec7b 2026-04-25 15:58:25 +02:00
Vladislav Belov dd9124ae99 Fixes Vulkan uniform buffer size after 9e371824c2
32 was accidentally added during debugging.
2026-04-25 11:55:12 +02:00
Vladislav Belov cb1fe07540 Removes GetDeviceCommandContext call from CFont
We need remove all occurences of GetDeviceCommandContext to be able to
add multithreading support in the future.
2026-04-10 23:53:23 +02:00
Vladislav Belov 68091177ac Removes ArrayDeleter 2026-04-10 23:03:00 +02:00
Vladislav Belov b52fbb7c62 Fixes particle shader compilation
The problem was only in case of USE_DESCRIPTOR_INDEXING. Because it adds
additional data for textures to the end of draw uniforms.

Fixes #8780
2026-03-22 00:53:30 +01:00
Vladislav Belov 975d1cb5fa Makes default rain a bit more natural 2026-02-20 22:46:50 +01:00
Vladislav Belov f1d62f348c Adds simple samples for new particle features 2026-02-20 22:46:50 +01:00
Vladislav Belov aae957ec7b Adds fixed orientation to particles
New features:

* Relative position
* Relative and absolute fixed axis
* Local space
* Axis along velocity vector
2026-02-20 22:46:49 +01:00
Vladislav Belov 4dff44ac9b Removes GL extensions for ARB backend 2026-02-20 22:07:40 +01:00
Vladislav Belov 6e9b94d3fc Removes ARB backend from options 2026-02-20 22:07:39 +01:00
Vladislav Belov 145e1c116d Removes ARB shaders 2026-02-20 22:07:39 +01:00
Vladislav Belov 0432b86de7 Removes ARB (legacy OpenGL) backend
ARB is a legacy backend which uses old assembly shaders. It makes
writing shaders more complex. According to the stats
https://feedback.wildfiregames.com we small amount of players with
ARB.

Fixes #8533
2026-02-20 22:07:38 +01:00
Vladislav Belov 2e0c34d479 Adds sort mode to particles 2026-02-09 21:29:42 +01:00
Vladislav Belov 70c15abadb Fixes Atlas Terrain panel in dark mode 2026-02-06 15:21:15 +01:00
Vladislav Belov cce01f4d6c Fixes compilation after #8621
Fixes #8685
2026-01-25 16:29:16 +01:00
Vladislav Belov df9c6f510c Fixes ProfilerViewer when drawing empty cells
Currently CalculateStringSize can't handle empty string (see #8630).
As a simple fix for RC just avoid drawing empty texts.

Refs: #8630
2025-12-28 17:36:36 +01:00
Vladislav Belov cea77c497c Fixes TerrainTextureManager after refactoring
In fb98f5059a the manager was refactored
and the order of deinitialization was incorrectly changed.
2025-12-28 12:34:26 +01:00
Vladislav Belov f43e98da09 Fixes uninitialized GPUSkinning in Atlas
Currently CRenderingOptions are initialized only once on the application
start. It means changed m_GPUSkinning wasn't reset on the switch to Atlas.

Fixes #8596
2025-12-27 21:02:48 +01:00
Vladislav Belov c0ea17f06e Replaces choosedDeviceIt by chosenDeviceIt 2025-11-11 01:51:16 +01:00
Vladislav Belov 485200342d Disables Vulkan devices sorting by default
Currently we always choose the best device. But it's not always
desirable. A more safe approach is to use the default device (with
index 0). The only downside of that is if a user didn't adjust
settings then the game might run on an integrated GPU instead of a
discrete one. In the future it'll be solved by selecting GPU in
options: #8529

Fixes #8455
2025-11-11 01:50:58 +01:00
Vladislav Belov c4bc6c9627 Adds an option to destroy Vulkan old swapchain before
Now it's possible to destroy the old swapchain before creating a new
one. It might make the swapchain creation a bit slower but with a
lower memory peak.
2025-11-10 00:06:52 +01:00
Vladislav Belov 8a64182ca2 Waits Vulkan device idle also on window resize
Fixes the case when a swapchain was recreated on resize rather than
by VK_ERROR_OUT_OF_DATE_KHR.
2025-11-10 00:06:51 +01:00
Vladislav Belov de36c75023 Deletes Vulkan resources on swapchain recreation
The change tries to minimize a memory peak during a window resizing.

Refs #6864
2025-11-10 00:06:41 +01:00
Vladislav Belov 8b1b1d28f8 Fixes missing Vulkan application version
Missing after dc830ccf55.
2025-11-09 12:58:16 +01:00
Vladislav Belov cb58116270 Fixes lseek for big files on Windows
It was broken in ef69c37f66, before that we were using _lseeki64.

Fixes #8459
2025-10-25 13:35:59 +02:00
Vladislav Belov 99bf50cd4e Reduces boost usage for strings 2025-10-16 09:17:05 +02:00
Vladislav Belov e8d9a8db67 Adds Vulkan timestamp limits to report 2025-10-16 00:36:02 +02:00
Vladislav Belov 1441c971f5 Uses SDL workaround only for GL 2025-10-15 00:52:25 +02:00
Vladislav Belov f2752f7230 Removes ARBShader capability 2025-10-14 13:04:16 +02:00
Vladislav Belov 70893b6a32 Adds ARM Neon to report 2025-10-13 19:57:52 +02:00
Vladislav Belov c99345a24b Adds MapReader to cppcheck ignore. 2025-10-13 16:57:15 +02:00
Vladislav Belov fb94cc704f Makes loading terrain textures more smooth 2025-10-13 00:14:45 +02:00
Vladislav Belov fb98f5059a Refactors TerrainTextureManager 2025-10-13 00:14:43 +02:00
Vladislav Belov 5bbb2c0b76 Makes parsing entities more smooth 2025-10-13 00:14:29 +02:00
Vladislav Belov 893f192eaa Makes TextRenderer allocates using LinearAllocator
Also replaces DynamicArena for model and terrain rendering by
LinearAllocator.
2025-10-12 00:53:12 +02:00
Vladislav Belov e4de94415e Removes unused pointer from the allocate function
Also allows to compare ProxyAllocator. For example, it might be
required for containers to compare iterators.
2025-10-12 00:53:10 +02:00
Vladislav Belov 53ff6f0d50 Adds LinearAllocator for faster allocations.
LinearAllocator (also known as bump allocator) allows to reuse the
same memory across the frame for short lifetime allocations.
2025-10-12 00:53:08 +02:00
Vladislav Belov bedb6129f2 Reduces string allocations in GUI and maths. 2025-10-11 19:44:22 +02:00
Vladislav Belov 3ffb5ec5a0 Removes USE_FOG define and switches to a shader parameter.
Refs #8385
2025-10-11 08:11:35 +02:00
Vladislav Belov 8f4aa8ddbd Adds a script to modify rules and tests to it. 2025-10-08 13:56:48 +02:00
Vladislav Belov 199f4cb666 Fixes uninitialized water textures.
Fixes #8052
2025-10-05 14:13:49 +02:00
Vladislav Belov e1d5e92c2a Restores minimap entities size and adds options.
Restores minimap entities size to size they have in A25.
Adds minimap options.

Fixes #6782.
2025-10-05 12:04:21 +02:00
Vladislav Belov e63c80c613 Reduces string allocations in paths. 2025-10-05 01:31:27 +02:00
Vladislav Belov 13b988cecb Removes shader effect duplications. 2025-09-29 12:04:53 +02:00
Vladislav Belov 275f6631c4 Allows to use the same technique for multiple shaders. 2025-09-29 12:04:42 +02:00
Vladislav Belov 9884317d33 Fixes non-PCH builds after e8a5103f8c. 2025-09-18 13:26:20 +02:00
Vladislav Belov e8a5103f8c Fixes #8057 by properly initializing atlas texture.
Fixes #8057
Fixes #8184
Fixes #8345
2025-09-17 14:31:16 +02:00
Vladislav Belov 3eca24ed11 Fixes CC for fonts. 2025-09-17 12:32:12 +02:00
Vladislav Belov e2d9450d0d Revert "Font: make atlas uploads queue-aware on Vulkan"
This reverts commit 256dff7fd4.
2025-09-17 12:32:08 +02:00
Vladislav Belov 7275f590e9 Fixes wxWidgets on 64bits. 2025-04-26 20:53:24 +02:00
Vladislav Belov d049a09f81 Adds libraries/win64 to .gitignore. 2025-04-26 20:53:22 +02:00
Vladislav Belov f2fcc12859 Restores iconv dependency for collada. 2025-04-26 20:53:20 +02:00
Vladislav Belov c46593149b Adds amd64 support to get-windows-libs. 2025-04-26 20:53:18 +02:00
Vladislav Belov 479cdbfc82 Removes unapplied arch_suffix for now. 2025-04-26 20:53:16 +02:00
Vladislav Belov b0160d0ece Adds 64bits support. 2025-04-26 20:53:09 +02:00
Vladislav Belov 2264807ad0 Fixes runtime switch of the GPU skinning.
Fixes #7572, #7630.
2025-04-25 20:13:59 +02:00
Vladislav Belov 0180faa1f2 Adds fixed frame frequency.
Adds possibility to control the frame time by setting the frame
frequency by a command line argument (`-fixed-frame-frequency`). It's
mostly useful for a trailer recording and graphics debugging.
2025-04-25 19:15:57 +02:00
Vladislav Belov 0bf3ff5ad6 Reduce allocations for GUI and Hotkeys.
It allows to reduce the number of allocations per-frame for GUI and
during initialization for Hotkeys.
2025-04-24 15:11:22 +02:00
Vladislav Belov bdd3cac051 Reduces allocations for ShaderDefines.
It allows to reduce the number of allocations per-frame for
ShaderDefines. For example, on Acropolis Bay it goes down from
2.7k to 0.9k for the whole map view.
We don't really need std::vector for it. Because materials and
particularly shaders shouldn't have so many parameters.
2025-04-24 01:05:34 +02:00
Vladislav Belov 9306aae297 Fixes PS::StaticVector insert and adds more tests
There was an incorrect mutable iterator construction missed in
ca242239f1.
2025-04-20 17:13:40 +02:00
Vladislav Belov e65879bdbf Fixes non-PCH compilation after 0b33921c06. 2025-04-17 23:26:23 +02:00
Vladislav Belov 0b33921c06 Removes GL code from the common GPU profiler. 2025-04-16 22:38:34 +02:00
Vladislav Belov 6ef6a87287 Adds queries implementation to renderer backends. 2025-04-16 22:38:32 +02:00
Vladislav Belov 0e7d193fcc Adds an interface for queries. 2025-04-16 22:38:24 +02:00
Vladislav Belov 9c560c36af Removes ARBShadersShadow IDevice capability.
According to our stats `GL_ARB_fragment_program_shadow` is supported
by all our GL users. Also we're going to remove OpenGL ARB in A29. So
I remove ARBShadersShadow completely.
2025-04-12 23:14:28 +02:00
Vladislav Belov fa3fb5d064 Allows compute shaders for GL only since 4.3.
It seems current checks for GL 4.2 aren't enough so just disable
compute shaders for GL 4.2. Fixes #7734.
2025-04-12 16:56:18 +02:00
Vladislav Belov bce6e2c238 Fixes out of bounds during GL buffer binding.
There was an out of bounds access during binding a uniform buffer on
GL. Fixes #7567, #7598.
2025-04-12 16:27:52 +02:00
Vladislav Belov a7ead4cf4c Disables compute shaders for GL ARB backend. 2025-01-28 18:56:15 +01:00
Vladislav Belov 635a268dd9 Disables GL storage buffers on Mesa.
This is a workaround to avoid disabling GL storage buffers completely.
Because they might not work or might lead to a decreased performance.
We need to investigate that further when we have a local reproduce.
2025-01-28 01:40:47 +01:00
Vladislav Belov cf9bc03ee9 Adds a temporary hack for grass lighting.
The hack uses per-vertex lighting for translucent objects. In the
future we need to use a separate shader.
2025-01-09 01:48:56 +01:00
Vladislav Belov 8ee48a164a Fixes missing SPIR-V shader combinations.
We have multiple renderer backends for a while. So we can't rely on
a single CONFIG_GLES2 macro for disabling features.
2025-01-07 02:49:38 +01:00
Vladislav Belov 0467d27b07 Fixes slow-path texture conversion on RPI4.
RPI4 returns `false` for `textureCompressionBC` because it doesn't
support formats above BC3. As the Vulkan specification requires to
support all BC formats to have `true` for `textureCompressionBC`.
2025-01-05 00:27:02 +01:00
Vladislav Belov 54701868da Fixes GLES compilation. 2025-01-04 18:22:23 +01:00
Vladislav Belov dba968013f Fixes Vulkan device selection.
According to #6936 some lower devices (especially virtual ones) might
report more memory than regular ones. So we can't use the memory
amount as a score for now.
2024-12-16 23:18:20 +01:00
Vladislav Belov c7ae248b77 Removes duplicated manifest for Windows. 2024-12-16 23:07:37 +01:00
Vladislav Belov 239720fd22 Adds @vladislavbelov as a codeowner to related parts. 2024-12-12 00:19:04 +01:00
Vladislav Belov e27909e603 Fixes SPIR-V compilation for compute_skinning shader.
Currently we don't mix storage images and storage buffers in the same
shader. Also we don't sample textures when we use storage buffers.
In the future we need to avoid shifting descriptor sets.
2024-12-11 01:18:05 +01:00
Vladislav Belov 38a0a0cf2e Adds GPU skinning to the options page. 2024-12-09 22:47:20 +01:00
Vladislav Belov 5d4df9cbe4 Enables GPU skinning by default. 2024-12-09 22:47:18 +01:00
Vladislav Belov de1257c8da Adds GPU skinning support via compute shaders.
We use a shader with 64 bones by default to consume less uniform memory.
But if we meet bigger skeletons we batch and handle them afterwards.
In the future we need to sort the input models to have less changes for
bound buffers. Also we might want to skin up to 4 models per a single
dispatch.
2024-12-09 22:47:17 +01:00
Vladislav Belov 9e371824c2 Adds storage buffer support to Vulkan and GL.
The idea is similar to the storage images but we need a separate
descriptor set in Vulkan and a program interface to gather used buffer
in GL.

For Vulkan we also need to track buffers to free used descriptor sets.
2024-12-09 22:47:15 +01:00
Vladislav Belov 4fb9a20c37 Removes the old code from the model_* shaders. 2024-12-09 22:47:14 +01:00
Vladislav Belov 6b18e58017 Adds a compute shader to perform a GPU skinning.
The main logic is taken from the experimental code in the model_common
shader but rewritten to use storage buffers as inputs.
2024-12-09 22:47:07 +01:00
Vladislav Belov 60b4072b29 Avoids assertions on Vulkan backend device creation in case of driver bugs. 2024-12-05 18:32:15 +01:00
Vladislav Belov e765a2c4ba Moves tests for generate_rules and merge_rules to a separate folder. 2024-12-05 17:25:54 +01:00
Vladislav Belov dbeb11a36b Adds avoiding non-default render debug modes for generating rules of SPIR-V shaders. 2024-12-05 17:25:52 +01:00
Vladislav Belov 7801c40b40 Adds order test to merge_rules. 2024-12-05 17:25:50 +01:00
Vladislav Belov 53de281311 Adds +x to tools. 2024-12-05 17:25:48 +01:00
Vladislav Belov d0d6113fc4 Fixes linter notes. 2024-12-05 17:25:47 +01:00
Vladislav Belov b12cc27bef Adds tools for SPIR-V rules. 2024-12-05 17:21:19 +01:00
Vladislav Belov 9094c3adb0 Batches update and upload passes for model renderers. 2024-11-08 13:57:57 +01:00
Vladislav Belov 0a6703762d Removes hardcoded Vulkan uniform descriptor set ranges. 2024-11-06 23:24:22 +01:00
Vladislav Belov 3a01d852e2 Adds binding slot type to Vulkan shader program. 2024-11-06 19:09:22 +01:00
Vladislav Belov eecc5a8fea Updates the list of GL extensions for glad. 2024-11-03 20:35:28 +01:00
Vladislav Belov ff923e5d6a Adds a patch to automatically apply the macOS fix to glad after its generation. 2024-11-03 20:26:13 +01:00