Kelsidavis-WoWee/include/rendering/vk_frame_data.hpp
Kelsi b5a2175269 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.
2026-03-11 11:37:58 -07:00

45 lines
1.2 KiB
C++

#pragma once
#include <vulkan/vulkan.h>
#include <glm/glm.hpp>
namespace wowee {
namespace rendering {
// Must match the PerFrame UBO layout in all shaders (std140 alignment)
struct GPUPerFrameData {
glm::mat4 view;
glm::mat4 projection;
glm::mat4 lightSpaceMatrix;
glm::vec4 lightDir; // xyz = direction, w = unused
glm::vec4 lightColor; // xyz = color, w = unused
glm::vec4 ambientColor; // xyz = color, w = unused
glm::vec4 viewPos; // xyz = camera pos, w = unused
glm::vec4 fogColor; // xyz = color, w = unused
glm::vec4 fogParams; // x = fogStart, y = fogEnd, z = time, w = unused
glm::vec4 shadowParams; // x = enabled(0/1), y = strength, z = unused, w = unused
};
// Push constants for the model matrix (most common case)
struct GPUPushConstants {
glm::mat4 model;
};
// Push constants for shadow rendering passes
struct ShadowPush {
glm::mat4 lightSpaceMatrix;
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