From b5a21752695f109d674507eaca63e8aab2a52695 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 11 Mar 2026 11:37:58 -0700 Subject: [PATCH] refactor: consolidate duplicate ShadowParamsUBO structure definition Move ShadowParamsUBO from 5 separate shadow rendering functions (2 in m2_renderer, 1 in terrain_renderer, 1 in wmo_renderer) into shared vk_frame_data.hpp header. Eliminates 5 identical local struct definitions and improves consistency across all shadow pass implementations. Structure layout matches shader std140 uniform buffer requirements. --- include/rendering/vk_frame_data.hpp | 10 ++++++++++ src/rendering/m2_renderer.cpp | 18 ------------------ src/rendering/terrain_renderer.cpp | 9 --------- src/rendering/wmo_renderer.cpp | 10 ---------- 4 files changed, 10 insertions(+), 37 deletions(-) diff --git a/include/rendering/vk_frame_data.hpp b/include/rendering/vk_frame_data.hpp index 76f9cc29..114e0f05 100644 --- a/include/rendering/vk_frame_data.hpp +++ b/include/rendering/vk_frame_data.hpp @@ -31,5 +31,15 @@ struct ShadowPush { glm::mat4 model; }; +// Uniform buffer for shadow rendering parameters (matches shader std140 layout) +struct ShadowParamsUBO { + int32_t useBones; + int32_t useTexture; + int32_t alphaTest; + int32_t foliageSway; + float windTime; + float foliageMotionDamp; +}; + } // namespace rendering } // namespace wowee diff --git a/src/rendering/m2_renderer.cpp b/src/rendering/m2_renderer.cpp index 99bef457..a2dfe54a 100644 --- a/src/rendering/m2_renderer.cpp +++ b/src/rendering/m2_renderer.cpp @@ -2865,16 +2865,6 @@ bool M2Renderer::initializeShadow(VkRenderPass shadowRenderPass) { if (!vkCtx_ || shadowRenderPass == VK_NULL_HANDLE) return false; VkDevice device = vkCtx_->getDevice(); - // ShadowParams UBO: useBones, useTexture, alphaTest, foliageSway, windTime, foliageMotionDamp - struct ShadowParamsUBO { - int32_t useBones = 0; - int32_t useTexture = 0; - int32_t alphaTest = 0; - int32_t foliageSway = 0; - float windTime = 0.0f; - float foliageMotionDamp = 1.0f; - }; - // Create ShadowParams UBO VkBufferCreateInfo bufCI{}; bufCI.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; @@ -3052,14 +3042,6 @@ void M2Renderer::renderShadow(VkCommandBuffer cmd, const glm::mat4& lightSpaceMa if (!shadowPipeline_ || !shadowParamsSet_) return; if (instances.empty() || models.empty()) return; - struct ShadowParamsUBO { - int32_t useBones = 0; - int32_t useTexture = 0; - int32_t alphaTest = 0; - int32_t foliageSway = 0; - float windTime = 0.0f; - float foliageMotionDamp = 1.0f; - }; const float shadowRadiusSq = shadowRadius * shadowRadius; // Reset per-frame texture descriptor pool for foliage alpha-test sets diff --git a/src/rendering/terrain_renderer.cpp b/src/rendering/terrain_renderer.cpp index 62a5c3f8..75ca41c9 100644 --- a/src/rendering/terrain_renderer.cpp +++ b/src/rendering/terrain_renderer.cpp @@ -788,15 +788,6 @@ bool TerrainRenderer::initializeShadow(VkRenderPass shadowRenderPass) { VmaAllocator allocator = vkCtx->getAllocator(); // ShadowParams UBO — terrain uses no bones, no texture, no alpha test - struct ShadowParamsUBO { - int32_t useBones = 0; - int32_t useTexture = 0; - int32_t alphaTest = 0; - int32_t foliageSway = 0; - float windTime = 0.0f; - float foliageMotionDamp = 1.0f; - }; - VkBufferCreateInfo bufCI{}; bufCI.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; bufCI.size = sizeof(ShadowParamsUBO); diff --git a/src/rendering/wmo_renderer.cpp b/src/rendering/wmo_renderer.cpp index 8767965f..3401cc07 100644 --- a/src/rendering/wmo_renderer.cpp +++ b/src/rendering/wmo_renderer.cpp @@ -1528,16 +1528,6 @@ bool WMORenderer::initializeShadow(VkRenderPass shadowRenderPass) { if (!vkCtx_ || shadowRenderPass == VK_NULL_HANDLE) return false; VkDevice device = vkCtx_->getDevice(); - // ShadowParams UBO: useBones, useTexture, alphaTest, foliageSway, windTime, foliageMotionDamp - struct ShadowParamsUBO { - int32_t useBones = 0; - int32_t useTexture = 0; - int32_t alphaTest = 0; - int32_t foliageSway = 0; - float windTime = 0.0f; - float foliageMotionDamp = 1.0f; - }; - // Create ShadowParams UBO VkBufferCreateInfo bufCI{}; bufCI.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;