Graphics: Replace runtime structs offsets by compile-time struct offsets

now that nzsl::FieldOffsets is constexpr this is possible
This commit is contained in:
SirLynix
2023-09-06 13:13:47 +02:00
committed by Jérôme Leclercq
parent 929b599337
commit e10f15243d
8 changed files with 287 additions and 171 deletions

View File

@@ -7,73 +7,17 @@
#ifndef NAZARA_GRAPHICS_PREDEFINEDSHADERSTRUCTS_HPP
#define NAZARA_GRAPHICS_PREDEFINEDSHADERSTRUCTS_HPP
#include <Nazara/Graphics/Config.hpp>
#include <Nazara/Graphics/MaterialSettings.hpp>
#include <array>
#include <Nazara/Graphics/PredefinedShaderStructBuilder.hpp>
namespace Nz
{
struct NAZARA_GRAPHICS_API PredefinedLightData
{
struct Light
{
std::size_t type;
std::size_t color;
std::size_t factor;
std::size_t parameter1;
std::size_t parameter2;
std::size_t parameter3;
std::size_t shadowMapSize;
std::size_t viewProjMatrix;
};
std::size_t lightsOffset;
std::size_t lightCountOffset;
std::size_t lightSize;
std::size_t totalSize;
Light lightMemberOffsets;
static constexpr std::size_t MaxLightCount = 3;
static PredefinedLightData GetOffsets();
};
struct NAZARA_GRAPHICS_API PredefinedInstanceData
{
std::size_t invWorldMatrixOffset;
std::size_t totalSize;
std::size_t worldMatrixOffset;
static PredefinedInstanceData GetOffsets();
};
struct NAZARA_GRAPHICS_API PredefinedSkeletalData
{
std::size_t totalSize;
std::size_t jointMatricesOffset;
static constexpr std::size_t MaxMatricesCount = 256;
static PredefinedSkeletalData GetOffsets();
};
struct NAZARA_GRAPHICS_API PredefinedViewerData
{
std::size_t eyePositionOffset;
std::size_t invProjMatrixOffset;
std::size_t invTargetSizeOffset;
std::size_t invViewMatrixOffset;
std::size_t invViewProjMatrixOffset;
std::size_t projMatrixOffset;
std::size_t targetSizeOffset;
std::size_t totalSize;
std::size_t viewMatrixOffset;
std::size_t viewProjMatrixOffset;
static PredefinedViewerData GetOffsets();
};
static constexpr PredefinedDirectionalLightData PredefinedDirectionalLightOffsets = PredefinedDirectionalLightData::Build();
static constexpr PredefinedPointLightData PredefinedPointLightOffsets = PredefinedPointLightData::Build();
static constexpr PredefinedSpotLightData PredefinedSpotLightOffsets = PredefinedSpotLightData::Build();
static constexpr PredefinedLightData PredefinedLightOffsets = PredefinedLightData::Build();
static constexpr PredefinedInstanceData PredefinedInstanceOffsets = PredefinedInstanceData::Build();
static constexpr PredefinedSkeletalData PredefinedSkeletalOffsets = PredefinedSkeletalData::Build();
static constexpr PredefinedViewerData PredefinedViewerOffsets = PredefinedViewerData::Build();
}
#include <Nazara/Graphics/PredefinedShaderStructs.inl>
#endif // NAZARA_GRAPHICS_PREDEFINEDSHADERSTRUCTS_HPP