From 6c5fbe0e4b91a07aaec4b39ea60d92db9c1da1a7 Mon Sep 17 00:00:00 2001 From: ubuntu1804 Date: Mon, 10 Nov 2025 22:08:52 +0800 Subject: [PATCH] Use std140 UBO layout and add Vulkan tab Change uniform buffer to std140 with explicit fields: time, resX, resY, rotation, wavePhase plus padding for proper std140 alignment. Regenerate SPIR-V and embedded .inc files to match. Add optional VulkanWidget tab --- shaders/background.frag | 14 ++- shaders/background.vert | 13 ++- shaders/geometry.frag | 13 ++- shaders/text.frag | 13 ++- src/mainwindow.cpp | 117 ++++++++++++---------- src/shaders_spirv/background.frag.spv | Bin 2488 -> 2624 bytes src/shaders_spirv/background.vert.spv | Bin 1536 -> 1672 bytes src/shaders_spirv/background_frag.inc | 134 +++++++++++++------------- src/shaders_spirv/background_vert.inc | 63 ++++++------ src/shaders_spirv/geometry.frag.spv | Bin 784 -> 920 bytes src/shaders_spirv/geometry_frag.inc | 36 ++++--- src/shaders_spirv/text.frag.spv | Bin 1320 -> 1456 bytes src/shaders_spirv/text_frag.inc | 68 +++++++------ src/vulkanwidget.cpp | 4 +- 14 files changed, 259 insertions(+), 216 deletions(-) diff --git a/shaders/background.frag b/shaders/background.frag index e1ca705..1a4bea3 100644 --- a/shaders/background.frag +++ b/shaders/background.frag @@ -6,11 +6,14 @@ layout(location = 2) in vec2 fragPosition; layout(location = 0) out vec4 outColor; -layout(binding = 0) uniform UniformBufferObject { - float time; - vec2 resolution; - float rotation; - float wavePhase; +layout(binding = 0, std140) uniform UniformBufferObject { + float time; // offset 0 + float resX; // offset 4 + float resY; // offset 8 + float rotation; // offset 12 + float wavePhase; // offset 16 + float padding1; // offset 20 + float padding2; // offset 24 } ubo; void main() { @@ -36,3 +39,4 @@ void main() { outColor = vec4(finalColor, 1.0); } + diff --git a/shaders/background.vert b/shaders/background.vert index 8cd8961..10ceacd 100644 --- a/shaders/background.vert +++ b/shaders/background.vert @@ -8,11 +8,14 @@ layout(location = 0) out vec4 fragColor; layout(location = 1) out vec2 fragTexCoord; layout(location = 2) out vec2 fragPosition; -layout(binding = 0) uniform UniformBufferObject { - float time; - vec2 resolution; - float rotation; - float wavePhase; +layout(binding = 0, std140) uniform UniformBufferObject { + float time; // offset 0 + float resX; // offset 4 + float resY; // offset 8 + float rotation; // offset 12 + float wavePhase; // offset 16 + float padding1; // offset 20 + float padding2; // offset 24 } ubo; void main() { diff --git a/shaders/geometry.frag b/shaders/geometry.frag index e596551..feeab0f 100644 --- a/shaders/geometry.frag +++ b/shaders/geometry.frag @@ -5,11 +5,14 @@ layout(location = 1) in vec2 fragTexCoord; layout(location = 0) out vec4 outColor; -layout(binding = 0) uniform UniformBufferObject { - float time; - vec2 resolution; - float rotation; - float wavePhase; +layout(binding = 0, std140) uniform UniformBufferObject { + float time; // offset 0 + float resX; // offset 4 + float resY; // offset 8 + float rotation; // offset 12 + float wavePhase; // offset 16 + float padding1; // offset 20 + float padding2; // offset 24 } ubo; void main() { diff --git a/shaders/text.frag b/shaders/text.frag index f261870..f6eaeab 100644 --- a/shaders/text.frag +++ b/shaders/text.frag @@ -5,11 +5,14 @@ layout(location = 1) in vec2 fragTexCoord; layout(location = 0) out vec4 outColor; -layout(binding = 0) uniform UniformBufferObject { - float time; - vec2 resolution; - float rotation; - float wavePhase; +layout(binding = 0, std140) uniform UniformBufferObject { + float time; // offset 0 + float resX; // offset 4 + float resY; // offset 8 + float rotation; // offset 12 + float wavePhase; // offset 16 + float padding1; // offset 20 + float padding2; // offset 24 } ubo; layout(binding = 1) uniform sampler2D texSampler; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d87d614..43d333f 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -63,6 +63,19 @@ MainWindow::MainWindow(QWidget *parent) connect(m_updateTimer, &QTimer::timeout, this, &MainWindow::updateStatusDisplay); m_updateTimer->start(100); // 每100ms更新一次状态显示 +#ifdef ENABLE_VULKAN_WIDGET + // 初始化Vulkan并默认启用渲染 + if (m_vulkanWidget) { + bool vulkanInitOk = m_vulkanWidget->initializeVulkan(); + if (vulkanInitOk) { + m_vulkanWidget->setRenderingEnabled(true); + qDebug() << "VulkanWidget initialized and rendering enabled by default"; + } else { + qDebug() << "Failed to initialize VulkanWidget:" << m_vulkanWidget->getLastError(); + } + } +#endif // ENABLE_VULKAN_WIDGET + // 初始化状态显示 updateStatusDisplay(); updateButtonStates(); @@ -96,7 +109,58 @@ void MainWindow::setupUI() m_tabWidget = new QTabWidget(this); m_mainLayout->addWidget(m_tabWidget, 1); - // ========== Tab 1: CustomWidget (QPainter) ========== +#ifdef ENABLE_VULKAN_WIDGET + // ========== Tab 1: VulkanWidget ========== + QWidget *vulkanTab = new QWidget(this); + QVBoxLayout *vulkanLayout = new QVBoxLayout(vulkanTab); + vulkanLayout->setSpacing(10); + vulkanLayout->setContentsMargins(10, 10, 10, 10); + + // 创建Vulkan渲染组件 + m_vulkanWidget = new VulkanWidget(this); + vulkanLayout->addWidget(m_vulkanWidget, 1); + + // 创建Vulkan控制面板 + m_vulkanControlGroup = new QGroupBox("Vulkan Control", this); + QHBoxLayout *vulkanControlLayout = new QHBoxLayout(m_vulkanControlGroup); + + m_enableVulkanBtn = new QPushButton("Enable Rendering", this); + m_disableVulkanBtn = new QPushButton("Disable Rendering", this); + m_resetVulkanFrameBtn = new QPushButton("Reset Frame Count", this); + + m_enableVulkanBtn->setMinimumHeight(35); + m_disableVulkanBtn->setMinimumHeight(35); + m_resetVulkanFrameBtn->setMinimumHeight(35); + + vulkanControlLayout->addWidget(m_enableVulkanBtn); + vulkanControlLayout->addWidget(m_disableVulkanBtn); + vulkanControlLayout->addWidget(m_resetVulkanFrameBtn); + vulkanControlLayout->addStretch(); + + vulkanLayout->addWidget(m_vulkanControlGroup); + + // 创建Vulkan状态显示面板 + m_vulkanStatusGroup = new QGroupBox("Vulkan Status Information", this); + QVBoxLayout *vulkanStatusLayout = new QVBoxLayout(m_vulkanStatusGroup); + + m_vulkanInitLabel = new QLabel("Vulkan Status: Not Initialized", this); + m_vulkanRenderStatusLabel = new QLabel("Rendering Status: Disabled", this); + m_vulkanFrameCountLabel = new QLabel("Frame Count: 0", this); + + m_vulkanInitLabel->setFont(statusFont); + m_vulkanRenderStatusLabel->setFont(statusFont); + m_vulkanFrameCountLabel->setFont(statusFont); + + vulkanStatusLayout->addWidget(m_vulkanInitLabel); + vulkanStatusLayout->addWidget(m_vulkanRenderStatusLabel); + vulkanStatusLayout->addWidget(m_vulkanFrameCountLabel); + + vulkanLayout->addWidget(m_vulkanStatusGroup); + + m_tabWidget->addTab(vulkanTab, "Vulkan Widget"); +#endif // ENABLE_VULKAN_WIDGET + + // ========== Tab 2: CustomWidget (QPainter) ========== QWidget *customTab = new QWidget(this); QVBoxLayout *customLayout = new QVBoxLayout(customTab); customLayout->setSpacing(10); @@ -147,57 +211,6 @@ void MainWindow::setupUI() customLayout->addWidget(m_statusGroup); m_tabWidget->addTab(customTab, "QPainter Widget"); - -#ifdef ENABLE_VULKAN_WIDGET - // ========== Tab 2: VulkanWidget ========== - QWidget *vulkanTab = new QWidget(this); - QVBoxLayout *vulkanLayout = new QVBoxLayout(vulkanTab); - vulkanLayout->setSpacing(10); - vulkanLayout->setContentsMargins(10, 10, 10, 10); - - // 创建Vulkan渲染组件 - m_vulkanWidget = new VulkanWidget(this); - vulkanLayout->addWidget(m_vulkanWidget, 1); - - // 创建Vulkan控制面板 - m_vulkanControlGroup = new QGroupBox("Vulkan Control", this); - QHBoxLayout *vulkanControlLayout = new QHBoxLayout(m_vulkanControlGroup); - - m_enableVulkanBtn = new QPushButton("Enable Rendering", this); - m_disableVulkanBtn = new QPushButton("Disable Rendering", this); - m_resetVulkanFrameBtn = new QPushButton("Reset Frame Count", this); - - m_enableVulkanBtn->setMinimumHeight(35); - m_disableVulkanBtn->setMinimumHeight(35); - m_resetVulkanFrameBtn->setMinimumHeight(35); - - vulkanControlLayout->addWidget(m_enableVulkanBtn); - vulkanControlLayout->addWidget(m_disableVulkanBtn); - vulkanControlLayout->addWidget(m_resetVulkanFrameBtn); - vulkanControlLayout->addStretch(); - - vulkanLayout->addWidget(m_vulkanControlGroup); - - // 创建Vulkan状态显示面板 - m_vulkanStatusGroup = new QGroupBox("Vulkan Status Information", this); - QVBoxLayout *vulkanStatusLayout = new QVBoxLayout(m_vulkanStatusGroup); - - m_vulkanInitLabel = new QLabel("Vulkan Status: Not Initialized", this); - m_vulkanRenderStatusLabel = new QLabel("Rendering Status: Disabled", this); - m_vulkanFrameCountLabel = new QLabel("Frame Count: 0", this); - - m_vulkanInitLabel->setFont(statusFont); - m_vulkanRenderStatusLabel->setFont(statusFont); - m_vulkanFrameCountLabel->setFont(statusFont); - - vulkanStatusLayout->addWidget(m_vulkanInitLabel); - vulkanStatusLayout->addWidget(m_vulkanRenderStatusLabel); - vulkanStatusLayout->addWidget(m_vulkanFrameCountLabel); - - vulkanLayout->addWidget(m_vulkanStatusGroup); - - m_tabWidget->addTab(vulkanTab, "Vulkan Widget"); -#endif // ENABLE_VULKAN_WIDGET } void MainWindow::setupConnections() diff --git a/src/shaders_spirv/background.frag.spv b/src/shaders_spirv/background.frag.spv index ea195c08a37f87765cb82ce155edd87205c1824a..97bc5520d8e4299e54b48c663a96559fad6ab87b 100644 GIT binary patch delta 245 zcmdlXd_ZKvJAGCL5e5bZMj$RqEsg+E3~US#F(!yuBt(o2td4myFQd3E3s9&$u`D$p zBe6IYtOFv;3S<`~rle%%r5hsaVnc`ONkOL_00kw@8$W{ho9waf4 oJs>dwBr%X3ATf}uVR}L4gTy2zdoq0#=LE}v#8B{NSLR|i08<_s!vFvP delta 109 zcmX>gvO{>nJ9#z+5e5bZMj$RqEzZv=Ey>K!V_;wdLXbGqWLZXWUS=SxJh3b_AS1Cj ub#fu&dq$4QiA=(x0zh#O23D|2kQ!wm7MXmM=_5BpHye=8zWFS3F&hBfkrasl diff --git a/src/shaders_spirv/background.vert.spv b/src/shaders_spirv/background.vert.spv index 4fb710da9666180273af0c7784bca1b96f735927..dbdb8e3e74eae058cc177a9310ea74eeafe7b2dd 100644 GIT binary patch delta 266 zcmZqR>EPXPim{%RL6w1lff0y{Qi~&i6ayOrM2ra{76}n!1FK^OiRG6hmSpDVA&avB zIpv9EsR0>@#i>9x8xVrbWd-7b#FUiGymUh#6E4mM6KBawH)5E~%k*9pWP}Hj)yhCV y$7DffVOt&~8IUTFi~y1t$P$p42$C4c0+5)*W>w~$jN+VN*MJ03@aC5+;*0HO<%wmf y0U3$Ksgr$~-t%$*MLZZ-A-X0PG7C?RVdh{I*}RZ>CnGn+FgBnPfz5@i;*0K!V_;wdLXbEUNIbtJ5h98ZX9kLwCzhoK wWF!`+POfE4X5^UskWp9^q{oAS6|5JeMj41jCc83S-O| zkdauN3f2LUWd*Ve5>rw#^U@8Gb+IADjTj~;GB%rnOz=RmM;XZHKoVmHvO!`zNMbCL nKQao-g6sgvh#<*;%m;}{Z02QZWEAHFI~62|f;Z1(?q>u51W6k| delta 117 zcmdnMy@G3l9HTrNg9ZZw10xU@r55Msl$K=X=P@v_0U=17X|gY)I4?7hRi0Ru8jz7# yoH}_SWAkJSCLUQPpr|qs3jnbP11nfPNF_*2WOFA|BO^D&5H_Fy-)2RYentTCL=wmV diff --git a/src/shaders_spirv/text_frag.inc b/src/shaders_spirv/text_frag.inc index 030a621..97645c8 100644 --- a/src/shaders_spirv/text_frag.inc +++ b/src/shaders_spirv/text_frag.inc @@ -1,5 +1,5 @@ // Auto-generated from text.frag.spv -// Size: 1320 bytes (330 words) +// Size: 1456 bytes (364 words) 0x07230203u, 0x00010000u, 0x0008000bu, 0x0000002bu, 0x00000000u, 0x00020011u, 0x00000001u, 0x0006000bu, 0x00000001u, 0x4c534c47u, 0x6474732eu, 0x3035342eu, 0x00000000u, 0x0003000eu, 0x00000000u, 0x00000001u, 0x0008000fu, 0x00000004u, 0x00000004u, 0x6e69616du, 0x00000000u, 0x00000010u, 0x00000018u, 0x0000001au, @@ -8,37 +8,41 @@ 0x53786574u, 0x6c706d61u, 0x00007265u, 0x00060005u, 0x00000010u, 0x67617266u, 0x43786554u, 0x64726f6fu, 0x00000000u, 0x00050005u, 0x00000018u, 0x4374756fu, 0x726f6c6fu, 0x00000000u, 0x00050005u, 0x0000001au, 0x67617266u, 0x6f6c6f43u, 0x00000072u, 0x00070005u, 0x00000028u, 0x66696e55u, 0x426d726fu, 0x65666675u, - 0x6a624f72u, 0x00746365u, 0x00050006u, 0x00000028u, 0x00000000u, 0x656d6974u, 0x00000000u, 0x00060006u, - 0x00000028u, 0x00000001u, 0x6f736572u, 0x6974756cu, 0x00006e6fu, 0x00060006u, 0x00000028u, 0x00000002u, - 0x61746f72u, 0x6e6f6974u, 0x00000000u, 0x00060006u, 0x00000028u, 0x00000003u, 0x65766177u, 0x73616850u, - 0x00000065u, 0x00030005u, 0x0000002au, 0x006f6275u, 0x00040047u, 0x0000000cu, 0x00000022u, 0x00000000u, + 0x6a624f72u, 0x00746365u, 0x00050006u, 0x00000028u, 0x00000000u, 0x656d6974u, 0x00000000u, 0x00050006u, + 0x00000028u, 0x00000001u, 0x58736572u, 0x00000000u, 0x00050006u, 0x00000028u, 0x00000002u, 0x59736572u, + 0x00000000u, 0x00060006u, 0x00000028u, 0x00000003u, 0x61746f72u, 0x6e6f6974u, 0x00000000u, 0x00060006u, + 0x00000028u, 0x00000004u, 0x65766177u, 0x73616850u, 0x00000065u, 0x00060006u, 0x00000028u, 0x00000005u, + 0x64646170u, 0x31676e69u, 0x00000000u, 0x00060006u, 0x00000028u, 0x00000006u, 0x64646170u, 0x32676e69u, + 0x00000000u, 0x00030005u, 0x0000002au, 0x006f6275u, 0x00040047u, 0x0000000cu, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000000cu, 0x00000021u, 0x00000001u, 0x00040047u, 0x00000010u, 0x0000001eu, 0x00000001u, 0x00040047u, 0x00000018u, 0x0000001eu, 0x00000000u, 0x00040047u, 0x0000001au, 0x0000001eu, 0x00000000u, 0x00050048u, 0x00000028u, 0x00000000u, 0x00000023u, 0x00000000u, 0x00050048u, 0x00000028u, 0x00000001u, - 0x00000023u, 0x00000008u, 0x00050048u, 0x00000028u, 0x00000002u, 0x00000023u, 0x00000010u, 0x00050048u, - 0x00000028u, 0x00000003u, 0x00000023u, 0x00000014u, 0x00030047u, 0x00000028u, 0x00000002u, 0x00040047u, - 0x0000002au, 0x00000022u, 0x00000000u, 0x00040047u, 0x0000002au, 0x00000021u, 0x00000000u, 0x00020013u, - 0x00000002u, 0x00030021u, 0x00000003u, 0x00000002u, 0x00030016u, 0x00000006u, 0x00000020u, 0x00040020u, - 0x00000007u, 0x00000007u, 0x00000006u, 0x00090019u, 0x00000009u, 0x00000006u, 0x00000001u, 0x00000000u, - 0x00000000u, 0x00000000u, 0x00000001u, 0x00000000u, 0x0003001bu, 0x0000000au, 0x00000009u, 0x00040020u, - 0x0000000bu, 0x00000000u, 0x0000000au, 0x0004003bu, 0x0000000bu, 0x0000000cu, 0x00000000u, 0x00040017u, - 0x0000000eu, 0x00000006u, 0x00000002u, 0x00040020u, 0x0000000fu, 0x00000001u, 0x0000000eu, 0x0004003bu, - 0x0000000fu, 0x00000010u, 0x00000001u, 0x00040017u, 0x00000012u, 0x00000006u, 0x00000004u, 0x00040015u, - 0x00000014u, 0x00000020u, 0x00000000u, 0x0004002bu, 0x00000014u, 0x00000015u, 0x00000000u, 0x00040020u, - 0x00000017u, 0x00000003u, 0x00000012u, 0x0004003bu, 0x00000017u, 0x00000018u, 0x00000003u, 0x00040020u, - 0x00000019u, 0x00000001u, 0x00000012u, 0x0004003bu, 0x00000019u, 0x0000001au, 0x00000001u, 0x00040017u, - 0x0000001bu, 0x00000006u, 0x00000003u, 0x0004002bu, 0x00000014u, 0x0000001eu, 0x00000003u, 0x00040020u, - 0x0000001fu, 0x00000001u, 0x00000006u, 0x0006001eu, 0x00000028u, 0x00000006u, 0x0000000eu, 0x00000006u, - 0x00000006u, 0x00040020u, 0x00000029u, 0x00000002u, 0x00000028u, 0x0004003bu, 0x00000029u, 0x0000002au, - 0x00000002u, 0x00050036u, 0x00000002u, 0x00000004u, 0x00000000u, 0x00000003u, 0x000200f8u, 0x00000005u, - 0x0004003bu, 0x00000007u, 0x00000008u, 0x00000007u, 0x0004003du, 0x0000000au, 0x0000000du, 0x0000000cu, - 0x0004003du, 0x0000000eu, 0x00000011u, 0x00000010u, 0x00050057u, 0x00000012u, 0x00000013u, 0x0000000du, - 0x00000011u, 0x00050051u, 0x00000006u, 0x00000016u, 0x00000013u, 0x00000000u, 0x0003003eu, 0x00000008u, - 0x00000016u, 0x0004003du, 0x00000012u, 0x0000001cu, 0x0000001au, 0x0008004fu, 0x0000001bu, 0x0000001du, - 0x0000001cu, 0x0000001cu, 0x00000000u, 0x00000001u, 0x00000002u, 0x00050041u, 0x0000001fu, 0x00000020u, - 0x0000001au, 0x0000001eu, 0x0004003du, 0x00000006u, 0x00000021u, 0x00000020u, 0x0004003du, 0x00000006u, - 0x00000022u, 0x00000008u, 0x00050085u, 0x00000006u, 0x00000023u, 0x00000021u, 0x00000022u, 0x00050051u, - 0x00000006u, 0x00000024u, 0x0000001du, 0x00000000u, 0x00050051u, 0x00000006u, 0x00000025u, 0x0000001du, - 0x00000001u, 0x00050051u, 0x00000006u, 0x00000026u, 0x0000001du, 0x00000002u, 0x00070050u, 0x00000012u, - 0x00000027u, 0x00000024u, 0x00000025u, 0x00000026u, 0x00000023u, 0x0003003eu, 0x00000018u, 0x00000027u, - 0x000100fdu, 0x00010038u + 0x00000023u, 0x00000004u, 0x00050048u, 0x00000028u, 0x00000002u, 0x00000023u, 0x00000008u, 0x00050048u, + 0x00000028u, 0x00000003u, 0x00000023u, 0x0000000cu, 0x00050048u, 0x00000028u, 0x00000004u, 0x00000023u, + 0x00000010u, 0x00050048u, 0x00000028u, 0x00000005u, 0x00000023u, 0x00000014u, 0x00050048u, 0x00000028u, + 0x00000006u, 0x00000023u, 0x00000018u, 0x00030047u, 0x00000028u, 0x00000002u, 0x00040047u, 0x0000002au, + 0x00000022u, 0x00000000u, 0x00040047u, 0x0000002au, 0x00000021u, 0x00000000u, 0x00020013u, 0x00000002u, + 0x00030021u, 0x00000003u, 0x00000002u, 0x00030016u, 0x00000006u, 0x00000020u, 0x00040020u, 0x00000007u, + 0x00000007u, 0x00000006u, 0x00090019u, 0x00000009u, 0x00000006u, 0x00000001u, 0x00000000u, 0x00000000u, + 0x00000000u, 0x00000001u, 0x00000000u, 0x0003001bu, 0x0000000au, 0x00000009u, 0x00040020u, 0x0000000bu, + 0x00000000u, 0x0000000au, 0x0004003bu, 0x0000000bu, 0x0000000cu, 0x00000000u, 0x00040017u, 0x0000000eu, + 0x00000006u, 0x00000002u, 0x00040020u, 0x0000000fu, 0x00000001u, 0x0000000eu, 0x0004003bu, 0x0000000fu, + 0x00000010u, 0x00000001u, 0x00040017u, 0x00000012u, 0x00000006u, 0x00000004u, 0x00040015u, 0x00000014u, + 0x00000020u, 0x00000000u, 0x0004002bu, 0x00000014u, 0x00000015u, 0x00000000u, 0x00040020u, 0x00000017u, + 0x00000003u, 0x00000012u, 0x0004003bu, 0x00000017u, 0x00000018u, 0x00000003u, 0x00040020u, 0x00000019u, + 0x00000001u, 0x00000012u, 0x0004003bu, 0x00000019u, 0x0000001au, 0x00000001u, 0x00040017u, 0x0000001bu, + 0x00000006u, 0x00000003u, 0x0004002bu, 0x00000014u, 0x0000001eu, 0x00000003u, 0x00040020u, 0x0000001fu, + 0x00000001u, 0x00000006u, 0x0009001eu, 0x00000028u, 0x00000006u, 0x00000006u, 0x00000006u, 0x00000006u, + 0x00000006u, 0x00000006u, 0x00000006u, 0x00040020u, 0x00000029u, 0x00000002u, 0x00000028u, 0x0004003bu, + 0x00000029u, 0x0000002au, 0x00000002u, 0x00050036u, 0x00000002u, 0x00000004u, 0x00000000u, 0x00000003u, + 0x000200f8u, 0x00000005u, 0x0004003bu, 0x00000007u, 0x00000008u, 0x00000007u, 0x0004003du, 0x0000000au, + 0x0000000du, 0x0000000cu, 0x0004003du, 0x0000000eu, 0x00000011u, 0x00000010u, 0x00050057u, 0x00000012u, + 0x00000013u, 0x0000000du, 0x00000011u, 0x00050051u, 0x00000006u, 0x00000016u, 0x00000013u, 0x00000000u, + 0x0003003eu, 0x00000008u, 0x00000016u, 0x0004003du, 0x00000012u, 0x0000001cu, 0x0000001au, 0x0008004fu, + 0x0000001bu, 0x0000001du, 0x0000001cu, 0x0000001cu, 0x00000000u, 0x00000001u, 0x00000002u, 0x00050041u, + 0x0000001fu, 0x00000020u, 0x0000001au, 0x0000001eu, 0x0004003du, 0x00000006u, 0x00000021u, 0x00000020u, + 0x0004003du, 0x00000006u, 0x00000022u, 0x00000008u, 0x00050085u, 0x00000006u, 0x00000023u, 0x00000021u, + 0x00000022u, 0x00050051u, 0x00000006u, 0x00000024u, 0x0000001du, 0x00000000u, 0x00050051u, 0x00000006u, + 0x00000025u, 0x0000001du, 0x00000001u, 0x00050051u, 0x00000006u, 0x00000026u, 0x0000001du, 0x00000002u, + 0x00070050u, 0x00000012u, 0x00000027u, 0x00000024u, 0x00000025u, 0x00000026u, 0x00000023u, 0x0003003eu, + 0x00000018u, 0x00000027u, 0x000100fdu, 0x00010038u diff --git a/src/vulkanwidget.cpp b/src/vulkanwidget.cpp index 0f223b0..bebf6ab 100644 --- a/src/vulkanwidget.cpp +++ b/src/vulkanwidget.cpp @@ -364,7 +364,7 @@ bool VulkanWidget::createDevice() vkGetPhysicalDeviceFeatures(m_physicalDevice, &supportedFeatures); VkPhysicalDeviceFeatures deviceFeatures = {}; - + // Enable sample rate shading for better MSAA quality if (supportedFeatures.sampleRateShading) { deviceFeatures.sampleRateShading = VK_TRUE; @@ -372,7 +372,7 @@ bool VulkanWidget::createDevice() } else { qDebug() << "Sample rate shading not supported by device"; } - + // Enable wide lines if supported (for smoother line rendering) if (supportedFeatures.wideLines) { deviceFeatures.wideLines = VK_TRUE;