Vladislav Belov
ddc07f92b9
Replaces legacy ProxyAllocator by AllocatorAdapter
2026-10-22 23:22:33 +02:00
phosit
ccd7481e5c
Use const char* to print OpenGL messages
...
GCC warns about a stringop-overread. There is no need to convert it to
an `std::string` and back.
2026-10-05 20:29:26 +02:00
phosit
369a7e7e5d
Use fmt::format for LOGERROR
...
The format string can be checked at compile time. It will be easier to
transition to `std::format`.
2026-10-05 20:29:26 +02:00
phosit
ba158aa3ff
Use fmt::format for LOGWARNING
...
The format string can be checked at compile time. It will be easier to
transition to `std::format`.
2026-10-05 20:29:25 +02:00
phosit
d686708c92
Use fmt::format for LOGMESSAGERENDER
...
The format string can be checked at compile time. It will be easier to
transition to `std::format`.
2026-10-05 20:29:25 +02:00
phosit
43cb3100b6
Use fmt::format for LOGMESSAGE
...
The format string can be checked at compile time. It will be easier to
transition to `std::format`.
2026-10-05 20:29:25 +02:00
phosit
6a0c8c1a5a
Remove u32
...
It's better to use types from the standard library.
2026-09-21 18:11:31 +02:00
phosit
500606e587
Remove u16
...
It's better to use types from the standard library.
2026-09-21 18:11:22 +02:00
phosit
00ee825374
Remove u8
...
It's better to use types from the standard library.
2026-09-21 18:11:14 +02:00
Vladislav Belov
0650721b19
Replaces round to closest power of two by std ones
2026-09-21 00:47:13 +02:00
Vladislav Belov
0b90eea56b
Replaces is_pow2 by std::has_single_bit
2026-09-21 00:47:11 +02:00
phosit
1fc267080d
Deduplicate BuildTextureRGBA functions
...
All of them contain the same loop.
2026-09-17 09:35:39 +02:00
phosit
926d230c6c
Remove classes inheriting TerrainTextureOverlay
...
Those classes only exposed one function. It's better to use
`std::function` for that, because it's not intrusive.
2026-09-17 09:35:39 +02:00
phosit
7a0aead3cd
Remove unused TerrainTextureOverlay parameter
2026-09-17 09:35:38 +02:00
Vladislav Belov
4ae50fd4a4
Reduces memory peak during window resize
2026-09-10 15:38:55 +02:00
Vladislav Belov
63e05d3c65
Removes unused updateFlags from GPU skinning
2026-09-10 15:27:18 +02:00
Vladislav Belov
100a13343a
Uses default group for vertex buffer for skinning
2026-09-10 15:27:14 +02:00
Vladislav Belov
e933d18a36
Moves tracking of requiring update models to upper
...
We need to track models to update in a single place. SceneRenderer in
that case. It allows us to make ModelVertexRenderer implementations more
straightforward.
2026-09-10 15:27:09 +02:00
Vladislav Belov
a374411279
Separates preparing for rendering of CPU skinned
...
Only CPU skinned models require preparing for rendering to mark vertex
buffer chunks as needed.
2026-09-10 15:27:04 +02:00
phosit
7bcee2ea0e
Remove XERO_ITER_EL
2026-09-08 10:32:51 +02:00
Vladislav Belov
c4e7364802
Removes unused BuildColor4ub from ModelRenderer
...
We don't need to calculate shading on CPU since we always use shaders.
Refs: a9c27b412b
2026-08-06 11:32:02 +02:00
Vladislav Belov
867bdf318b
Fixes missing material reference in ModelRenderer
...
Missed in 18a16aa135
2026-08-06 10:31:16 +02:00
Vladislav Belov
e64a138f92
Fixes outdated state on disabling GPU skinning
2026-08-04 23:06:12 +02:00
Vladislav Belov
4a7b7e7df1
Removes smart pointers from ModelRenderer
...
We don't need to use pointers because we know lifetimes of all
renderers. And its list statically defined. A new renderer should follow
DOD and use a separate submission list with a separate inplace renderer.
2026-08-04 23:06:10 +02:00
Vladislav Belov
fa90ddc8b6
Refactors ModelRenderer and makes it closer to DOD
...
Separates submitted models and moder renderer and makes relations
explicit. Now it's clear that we don't need separate ModelRenderer and
ModelVertexRenderer.
2026-08-04 23:06:09 +02:00
Vladislav Belov
764a420797
Merges ModelRenderer and ShaderModelRenderer
...
We use only shaders to render models so we don't need a separate class.
BatchModelRenderer was renamed in 6bc33fe8bd .
m_Renderer became unused in 0346ba1b18 .
2026-08-04 23:06:07 +02:00
Vladislav Belov
8a2bb10827
Renames ShaderModelRenderer instances
2026-08-04 23:06:06 +02:00
Vladislav Belov
af9d102126
Removes legacy logic of reused ModelRendererPtr
...
It became unused in 4a69e9117e .
2026-08-04 23:06:04 +02:00
Vladislav Belov
f781181899
Adds sRGB support for proper lighting
...
Currently we're incorrectly using sRGB colors as raw inputs for lighting
instead of conversion to linear space. For proper PBR we need linear
values.
2026-07-29 01:29:09 +02:00
Vladislav Belov
e2f5b20922
Fixes GL internal format of textures in compute
...
In compute shaders load/store operations requires sized formats.
2026-07-28 23:32:23 +02:00
Vladislav Belov
7ee476928b
Fixes missing window preview on Alt+Tab
...
There was a crash on Alt+Tab in fullscreen for some specific driver:
https://code.wildfiregames.com/D1212
It was related only to post processing so it's time to try to enable
rendering again (but with provided option to disable it). Also without
rendering we might have some bugs in other components. See:
https://github.com/libsdl-org/SDL/issues/5033#issuecomment-981819661
The issue is reported here (first one):
https://wildfiregames.com/forum/topic/129061-two-vulkan-issues-in-a27-and-unrelated-choppiness-caused-by-control-groups/
2026-07-14 19:54:00 +02:00
Vladislav Belov
5778ef6cac
Removes std::shared_ptr usages from particles
2026-07-13 01:01:03 +02:00
Vladislav Belov
d2375de187
Splits PrepareScene and remove intermediates
...
We don't need to have intermediate functions as they don't add something
useful.
2026-07-13 00:40:36 +02:00
Vladislav Belov
43dd988ee7
Removes render methods from GameView
2026-07-13 00:40:34 +02:00
Vladislav Belov
a2798b733f
Splits render frame function
2026-07-13 00:40:32 +02:00
Vladislav Belov
abf444d91c
Reduces vertex maximum stride to 16
...
https://wikis.khronos.org/opengl/Vertex_Specification_Best_Practices
> The alignment of any attribute's data should be no less than 4 bytes.
But to make it a bit safer for older drivers we prefer to use 16 bytes
alignment (vec4) for now to match std140.
2026-07-12 17:54:26 +02:00
Vladislav Belov
db8c05572f
Adds Vulkan vertex format verification
2026-07-12 17:09:11 +02:00
Vladislav Belov
fd99348d56
Fixes AMD Vulkan drivers crash with GPU skinning
...
R16G16B16_SFLOAT isn't guaranteed to be supported:
https://docs.vulkan.org/spec/latest/chapters/formats.html
See Table 17. Mandatory Format Support: 16-bit Components
It's safe to use less components:
https://docs.vulkan.org/spec/latest/chapters/fxvertex.html
> The number of components in the vertex shader input variable
> need not exactly match the number of components in the format.
> If the vertex shader has fewer components, the extra components
> are discarded.
The issue is reported here (second one):
https://wildfiregames.com/forum/topic/129061-two-vulkan-issues-in-a27-and-unrelated-choppiness-caused-by-control-groups/
2026-07-12 17:09:09 +02:00
Vladislav Belov
92ee2dba9e
Removes unused OGL legacy
2026-07-09 22:53:30 +02:00
Vladislav Belov
552d91e92a
Removes legacy GL error handling
...
We have GL_KHR_debug for proper error handling. ogl_WarnIfError isn't
really useful since it doesn't provide per-call granularity and requires
recompilation. So if it'll be really needed we can wrap all GL calls
into a macro like GL_CALL.
2026-07-09 22:53:29 +02:00
Vladislav Belov
11f78e5c1a
Uses GLAD to get GL version
2026-07-08 20:52:23 +02:00
Vladislav Belov
4ca83fa071
Uses GLAD to check extensions
...
If GLAD failed to load an extension then we can't use it. Because all
its functions are nullptr.
2026-07-08 20:06:18 +02:00
Ralph Sennhauser
99bbc24265
Remove global g_xres and x_yres
...
Instead query g_VideoMode where needed. As both g_xres and g_yres aren't
global anymore remove static from UpdateRenderer. While at it use more
desicriptive names: GetXRes -> GetWindowWidth, GetYRes ->
GetWindowHeight.
This reduces the amount of variables tracking width and height by one
each.
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com >
2026-07-08 11:35:46 +02:00
Vladislav Belov
2bc674cbaa
Removes extensions prior 2.1
...
Since we generate GL headers using GLAD with 2.1 version we don't need
to check extensions prior that.
2026-07-08 09:28:52 +02:00
Vladislav Belov
0a22bc66f7
Makes GL error handling explicit in report
2026-07-08 08:13:46 +02:00
Vladislav Belov
0168f45a65
Refactors GL device report
...
It makes the report function easier to read.
2026-07-08 08:13:44 +02:00
Vladislav Belov
46af67b5bd
Removes RenderPath
...
We can render the game only with shaders so we don't need to support
fixed function pipeline as a separate render path. We only need to know
when to warn a user.
Fixes #6244
2026-07-07 23:12:45 +02:00
Vladislav Belov
0538e95793
Makes GameView::GetCamera constant
2026-06-28 17:57:26 +02:00
Vladislav Belov
e0d131854d
Makes GameView returning reference on camera
2026-06-28 17:57:16 +02:00
Vladislav Belov
0cc07aa209
Removes legacy glEnable of GL_TEXTURE_2D
...
It needs to bo enabled only for fixed-function pipeline.
https://registry.khronos.org/OpenGL-Refpages/gl2.1/
> If enabled and no fragment shader is active, two-dimensional texturing is performed
2026-06-28 15:56:33 +02:00