Somehow fix lightmaps being corrupted in debug build

This commit is contained in:
RaveYard 2023-09-10 21:49:00 +02:00 committed by Christoph Oelckers
parent f9580f081e
commit 9b3a3c6115
5 changed files with 47 additions and 48 deletions

View file

@ -54,7 +54,6 @@ void VkLightmap::Raytrace(LevelMesh* level, const TArray<LevelMeshSurface*>& sur
{
bool newLevel = (mesh != level);
mesh = level;
if (newLevel)
{
UpdateAccelStructDescriptors();
@ -63,6 +62,8 @@ void VkLightmap::Raytrace(LevelMesh* level, const TArray<LevelMeshSurface*>& sur
lightmapRaytraceLast.Reset();
}
if (surfaces.Size())
{
lightmapRaytrace.active = true;
lightmapRaytraceLast.active = true;
@ -120,6 +121,7 @@ void VkLightmap::Raytrace(LevelMesh* level, const TArray<LevelMeshSurface*>& sur
lightmapRaytrace.Unclock();
lightmapRaytraceLast.Unclock();
}
}
void VkLightmap::RenderAtlasImage(size_t pageIndex, const TArray<LevelMeshSurface*>& surfaces)
{

View file

@ -369,8 +369,6 @@ void DoomLevelMesh::BindLightmapSurfacesToGeometry(FLevelLocals& doomMap)
{
surface.TexCoords = (float*)&LightmapUvs[surface.startUvIndex];
surface.LightmapNum = surface.atlasPageIndex;
if (surface.Type == ST_FLOOR || surface.Type == ST_CEILING)
{
surface.Subsector = &doomMap.subsectors[surface.typeIndex];

View file

@ -16,10 +16,9 @@ struct FLevelLocals;
struct DoomLevelMeshSurface : public LevelMeshSurface
{
subsector_t* Subsector;
side_t* Side;
sector_t* ControlSector;
uint32_t LightmapNum; // To do: same as atlasPageIndex. Delete one of them!
subsector_t* Subsector = nullptr;
side_t* Side = nullptr;
sector_t* ControlSector = nullptr;
float* TexCoords;
};

View file

@ -243,7 +243,7 @@ static int CreateIndexedSectorVerticesLM(FRenderState& renderstate, sector_t* se
if (lightmap && lightmap->Type != ST_UNKNOWN) // lightmap may be missing if the subsector is degenerate triangle
{
float* luvs = lightmap->TexCoords;
int lindex = lightmap->LightmapNum;
int lindex = lightmap->atlasPageIndex;
for (unsigned int j = 0; j < sub->numlines; j++)
{
SetFlatVertex(vbo_shadowdata[vi + pos], sub->firstline[j].v1, plane, luvs[j * 2], luvs[j * 2 + 1], lindex);

View file

@ -1019,7 +1019,7 @@ bool HWWall::SetWallCoordinates(seg_t * seg, FTexCoordInfo *tci, float textureto
if (lightmap && lightmap->Type != ST_UNKNOWN)
{
srclightuv = (texcoord*)lightmap->TexCoords;
lindex = (float)lightmap->LightmapNum;
lindex = (float)lightmap->atlasPageIndex;
}
else
{
@ -1725,7 +1725,7 @@ void HWWall::BuildFFBlock(HWDrawInfo *di, FRenderState& state, seg_t * seg, F3DF
if (lightmap && lightmap->Type != ST_UNKNOWN)
{
srclightuv = (texcoord*)lightmap->TexCoords;
lindex = (float)lightmap->LightmapNum;
lindex = (float)lightmap->atlasPageIndex;
}
else
{