refactor: consolidate duplicate ShadowPush structure definition

Move ShadowPush from 4 separate rendering modules (character_renderer,
m2_renderer, terrain_renderer, wmo_renderer) into shared vk_frame_data.hpp
header. This eliminates 4 identical local struct definitions and ensures
consistency across all shadow rendering passes. Add vk_frame_data.hpp include
to character_renderer.cpp.
This commit is contained in:
Kelsi 2026-03-11 11:32:08 -07:00
parent 3202c1392d
commit cda703b0f4
5 changed files with 7 additions and 6 deletions

View file

@ -25,5 +25,11 @@ struct GPUPushConstants {
glm::mat4 model;
};
// Push constants for shadow rendering passes
struct ShadowPush {
glm::mat4 lightSpaceMatrix;
glm::mat4 model;
};
} // namespace rendering
} // namespace wowee

View file

@ -21,6 +21,7 @@
#include "rendering/vk_shader.hpp"
#include "rendering/vk_buffer.hpp"
#include "rendering/vk_utils.hpp"
#include "rendering/vk_frame_data.hpp"
#include "rendering/camera.hpp"
#include "pipeline/asset_manager.hpp"
#include "pipeline/blp_loader.hpp"
@ -2678,8 +2679,6 @@ void CharacterRenderer::renderShadow(VkCommandBuffer cmd, const glm::mat4& light
vkCmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, shadowPipelineLayout_,
1, 1, &shadowParamsSet_, 0, nullptr);
struct ShadowPush { glm::mat4 lightSpaceMatrix; glm::mat4 model; };
const float shadowRadiusSq = shadowRadius * shadowRadius;
for (auto& pair : instances) {
auto& inst = pair.second;

View file

@ -3070,7 +3070,6 @@ void M2Renderer::renderShadow(VkCommandBuffer cmd, const glm::mat4& lightSpaceMa
if (!shadowPipeline_ || !shadowParamsSet_) return;
if (instances.empty() || models.empty()) return;
struct ShadowPush { glm::mat4 lightSpaceMatrix; glm::mat4 model; };
struct ShadowParamsUBO {
int32_t useBones = 0;
int32_t useTexture = 0;

View file

@ -965,7 +965,6 @@ void TerrainRenderer::renderShadow(VkCommandBuffer cmd, const glm::mat4& lightSp
// Identity model matrix — terrain vertices are already in world space
static const glm::mat4 identity(1.0f);
struct ShadowPush { glm::mat4 lightSpaceMatrix; glm::mat4 model; };
ShadowPush push{ lightSpaceMatrix, identity };
vkCmdPushConstants(cmd, shadowPipelineLayout_, VK_SHADER_STAGE_VERTEX_BIT,
0, 128, &push);

View file

@ -1715,8 +1715,6 @@ void WMORenderer::renderShadow(VkCommandBuffer cmd, const glm::mat4& lightSpaceM
vkCmdBindDescriptorSets(cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, shadowPipelineLayout_,
0, 1, &shadowParamsSet_, 0, nullptr);
struct ShadowPush { glm::mat4 lightSpaceMatrix; glm::mat4 model; };
// WMO shadow cull uses the ortho half-extent (shadow map coverage) rather than
// the proximity radius so that distant buildings whose shadows reach the player
// are still rendered into the shadow map.