Graphics: Fix PredefinedViewerData size
This commit is contained in:
parent
711199fe51
commit
e6ada6846d
|
|
@ -27,6 +27,7 @@ namespace Nz
|
||||||
std::size_t AddStruct(const FieldOffsets& fieldStruct);
|
std::size_t AddStruct(const FieldOffsets& fieldStruct);
|
||||||
std::size_t AddStructArray(const FieldOffsets& fieldStruct, std::size_t arraySize);
|
std::size_t AddStructArray(const FieldOffsets& fieldStruct, std::size_t arraySize);
|
||||||
|
|
||||||
|
inline std::size_t GetAlignedSize() const;
|
||||||
inline std::size_t GetLargestFieldAlignement() const;
|
inline std::size_t GetLargestFieldAlignement() const;
|
||||||
inline std::size_t GetSize() const;
|
inline std::size_t GetSize() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,14 @@ namespace Nz
|
||||||
return m_largestFieldAlignment;
|
return m_largestFieldAlignment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline std::size_t FieldOffsets::GetAlignedSize() const
|
||||||
|
{
|
||||||
|
if (m_layout == StructLayout_Std140)
|
||||||
|
return Align(m_size, m_largestFieldAlignment);
|
||||||
|
else
|
||||||
|
return m_size;
|
||||||
|
}
|
||||||
|
|
||||||
inline std::size_t FieldOffsets::GetSize() const
|
inline std::size_t FieldOffsets::GetSize() const
|
||||||
{
|
{
|
||||||
return m_size;
|
return m_size;
|
||||||
|
|
|
||||||
|
|
@ -21,13 +21,13 @@ namespace Nz
|
||||||
lightData.innerOffsets.parameter3 = lightStruct.AddField(StructFieldType_Float2);
|
lightData.innerOffsets.parameter3 = lightStruct.AddField(StructFieldType_Float2);
|
||||||
lightData.innerOffsets.shadowMappingFlag = lightStruct.AddField(StructFieldType_Bool1);
|
lightData.innerOffsets.shadowMappingFlag = lightStruct.AddField(StructFieldType_Bool1);
|
||||||
|
|
||||||
lightData.innerOffsets.totalSize = lightStruct.GetSize();
|
lightData.innerOffsets.totalSize = lightStruct.GetAlignedSize();
|
||||||
|
|
||||||
FieldOffsets lightDataStruct(StructLayout_Std140);
|
FieldOffsets lightDataStruct(StructLayout_Std140);
|
||||||
for (std::size_t& lightOffset : lightData.lightArray)
|
for (std::size_t& lightOffset : lightData.lightArray)
|
||||||
lightOffset = lightDataStruct.AddStruct(lightStruct);
|
lightOffset = lightDataStruct.AddStruct(lightStruct);
|
||||||
|
|
||||||
lightData.lightArraySize = lightDataStruct.GetSize();
|
lightData.lightArraySize = lightDataStruct.GetAlignedSize();
|
||||||
|
|
||||||
return lightData;
|
return lightData;
|
||||||
}
|
}
|
||||||
|
|
@ -62,7 +62,7 @@ namespace Nz
|
||||||
instanceData.worldMatrixOffset = viewerStruct.AddMatrix(StructFieldType_Float1, 4, 4, true);
|
instanceData.worldMatrixOffset = viewerStruct.AddMatrix(StructFieldType_Float1, 4, 4, true);
|
||||||
instanceData.invWorldMatrixOffset = viewerStruct.AddMatrix(StructFieldType_Float1, 4, 4, true);
|
instanceData.invWorldMatrixOffset = viewerStruct.AddMatrix(StructFieldType_Float1, 4, 4, true);
|
||||||
|
|
||||||
instanceData.totalSize = viewerStruct.GetSize();
|
instanceData.totalSize = viewerStruct.GetAlignedSize();
|
||||||
|
|
||||||
return instanceData;
|
return instanceData;
|
||||||
}
|
}
|
||||||
|
|
@ -107,7 +107,7 @@ namespace Nz
|
||||||
viewerData.invTargetSizeOffset = viewerStruct.AddField(StructFieldType_Float2);
|
viewerData.invTargetSizeOffset = viewerStruct.AddField(StructFieldType_Float2);
|
||||||
viewerData.eyePositionOffset = viewerStruct.AddField(StructFieldType_Float3);
|
viewerData.eyePositionOffset = viewerStruct.AddField(StructFieldType_Float3);
|
||||||
|
|
||||||
viewerData.totalSize = viewerStruct.GetSize();
|
viewerData.totalSize = viewerStruct.GetAlignedSize();
|
||||||
|
|
||||||
return viewerData;
|
return viewerData;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue