Repository navigation
Vulkan: decals are not drawn #7866
Copy link
Copy link
Open
Description
Problem
With -vulkan, decals don't show up at all. The same decals draw normally in OpenGL. I found this while testing glow changes for #7865, but it happens on the latest nightly without that PR.
Steps to reproduce
- Make a mod folder with these two tables. Neither retail FS2 nor MediaVPs 5.0.2 define any decals, so the first table defines one and the second places it.
beamglow1ships with retail FS2, so no image files are needed.
data/tables/vkdecal-dcl.tbm
#Decals
$Decal: vkdecaltest
+Diffuse: beamglow1
+Glow: beamglow1
#End
data/tables/vkdecal-sct.tbm (puts one decal on every ship when the mission starts)
#Conditional Hooks
$Application: FS2_Open
$On Mission Start: [
local def = tb.DecalDefinitions["vkdecaltest"]
for i = 1, #mn.Ships do
local s = mn.Ships[i]
def:create(s.Class.Model.Radius, s.Class.Model.Radius, -1, -1, s, s.Class.Model:getDetailRoot())
end
]
#End
- Run nightly 26.1.0-20261013 with MediaVPs 5.0.2 and that mod, and start the first main campaign mission (
sm1-01) with post-processing on. - Look at the ships ahead of you: in OpenGL they are lit white by the decal. Run again with
-vulkanand they look normal.
Expected vs actual
- Expected: the decal shows on the ships in both renderers.
- Actual: it shows in OpenGL but not with
-vulkan.
OpenGL left, Vulkan right, same mission a few seconds apart, so the ships have moved:
Test environment
- Build: nightly 26.1.0-20261013 (b37cfda), Linux release AppImage. A source build of master a1250d7 (2026-10-09) behaves the same.
- Mods: the two tables above, then MediaVPs 5.0.2. The bug also shows with retail data alone (no MediaVPs; checked on the source build).
- Resolution 1920x1080, mission
sm1-01, default options (post-processing on). - System: Fedora 44, NVIDIA RTX 5080, driver 615.71.09 (open kernel module), Vulkan 1.4.351.
What I checked
- Vulkan passes every check the decal system makes.
tb.isDecalSystemActive()returns true under Vulkan (checked on the source build), so the startup checks for deferred lighting, normal maps and separate blend functions passed.tb.DecalOptionActiveis true, andvulkan_is_capable()always reports instanced rendering, sodecals::renderAll()doesn't return early. So as far as I can tell from the source, the decals get to Vulkan's own draw path (vulkan_render_decals) and still don't show; I haven't traced that call at runtime. - I also ran a larger test, decals on capital ships at 1920x1080. With decals on and off, the Vulkan frames came out the same, apart from noise.
- My OpenGL runs were on Mesa's software driver (headless test setup), and the Vulkan runs on the NVIDIA card, so the comparison crosses drivers as well as renderers.
- I only tested decals created from Lua. I couldn't get weapon impact decals (
$Impact Decal:) to appear in my test on either renderer, so I can't say yet whether those are affected too.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels

Activity