Remove light cells

This commit is contained in:
Magnus Norddahl 2021-09-24 17:02:40 +02:00
parent 82c0837928
commit aebcfe4342
2 changed files with 15 additions and 9 deletions

View file

@ -67,6 +67,7 @@ void LightmapBuilder::CreateLightmaps(FLevel &doomMap, int sampleDistance, int t
CreateSurfaceLights(); CreateSurfaceLights();
CreateTraceTasks(); CreateTraceTasks();
/*
SetupLightCellGrid(); SetupLightCellGrid();
SetupTaskProcessed("Tracing cells", grid.blocks.size()); SetupTaskProcessed("Tracing cells", grid.blocks.size());
@ -75,6 +76,7 @@ void LightmapBuilder::CreateLightmaps(FLevel &doomMap, int sampleDistance, int t
PrintTaskProcessed(); PrintTaskProcessed();
}); });
printf("Cells traced: %i \n\n", tracedTexels); printf("Cells traced: %i \n\n", tracedTexels);
*/
SetupTaskProcessed("Tracing surfaces", traceTasks.size()); SetupTaskProcessed("Tracing surfaces", traceTasks.size());
Worker::RunJob(traceTasks.size(), [=](int id) { Worker::RunJob(traceTasks.size(), [=](int id) {
@ -690,6 +692,7 @@ void LightmapBuilder::CreateSurfaceLights()
} }
} }
/*
void LightmapBuilder::SetupLightCellGrid() void LightmapBuilder::SetupLightCellGrid()
{ {
BBox worldBBox = mesh->CollisionMesh->get_bbox(); BBox worldBBox = mesh->CollisionMesh->get_bbox();
@ -790,6 +793,7 @@ void LightmapBuilder::LightBlock(int id)
block.layers = 0; block.layers = 0;
} }
} }
*/
void LightmapBuilder::AddLightmapLump(FWadWriter &wadFile) void LightmapBuilder::AddLightmapLump(FWadWriter &wadFile)
{ {
@ -806,17 +810,17 @@ void LightmapBuilder::AddLightmapLump(FWadWriter &wadFile)
numSurfaces++; numSurfaces++;
} }
} }
int numCells = 0; //int numCells = 0;
for (size_t i = 0; i < grid.blocks.size(); i++) //for (size_t i = 0; i < grid.blocks.size(); i++)
numCells += grid.blocks[i].cells.Size(); // numCells += grid.blocks[i].cells.Size();
int version = 0; int version = 0;
int headerSize = 4 * sizeof(uint32_t) + 6 * sizeof(uint16_t); int headerSize = 4 * sizeof(uint32_t) + 6 * sizeof(uint16_t);
int cellBlocksSize = grid.blocks.size() * 2 * sizeof(uint16_t); //int cellBlocksSize = grid.blocks.size() * 2 * sizeof(uint16_t);
int cellsSize = numCells * sizeof(float) * 3; //int cellsSize = numCells * sizeof(float) * 3;
int surfacesSize = surfaces.size() * 5 * sizeof(uint32_t); int surfacesSize = surfaces.size() * 5 * sizeof(uint32_t);
int texCoordsSize = numTexCoords * 2 * sizeof(float); int texCoordsSize = numTexCoords * 2 * sizeof(float);
int texDataSize = textures.size() * textureWidth * textureHeight * 3 * 2; int texDataSize = textures.size() * textureWidth * textureHeight * 3 * 2;
int lumpSize = headerSize + cellBlocksSize + cellsSize + surfacesSize + texCoordsSize + texDataSize; int lumpSize = headerSize + /*cellBlocksSize + cellsSize +*/ surfacesSize + texCoordsSize + texDataSize;
// Setup buffer // Setup buffer
std::vector<uint8_t> buffer(lumpSize); std::vector<uint8_t> buffer(lumpSize);
@ -829,6 +833,7 @@ void LightmapBuilder::AddLightmapLump(FWadWriter &wadFile)
lumpFile.Write16(textures.size()); lumpFile.Write16(textures.size());
lumpFile.Write32(numSurfaces); lumpFile.Write32(numSurfaces);
lumpFile.Write32(numTexCoords); lumpFile.Write32(numTexCoords);
/*
lumpFile.Write16(grid.x); lumpFile.Write16(grid.x);
lumpFile.Write16(grid.y); lumpFile.Write16(grid.y);
lumpFile.Write16(grid.width); lumpFile.Write16(grid.width);
@ -853,6 +858,7 @@ void LightmapBuilder::AddLightmapLump(FWadWriter &wadFile)
lumpFile.WriteFloat(cells[j].z); lumpFile.WriteFloat(cells[j].z);
} }
} }
*/
// Write surfaces // Write surfaces
int coordOffsets = 0; int coordOffsets = 0;

View file

@ -102,8 +102,8 @@ private:
void TraceSurface(Surface *surface, int offset); void TraceSurface(Surface *surface, int offset);
void TraceIndirectLight(Surface *surface, int offset); void TraceIndirectLight(Surface *surface, int offset);
void FinishSurface(Surface *surface); void FinishSurface(Surface *surface);
void SetupLightCellGrid(); //void SetupLightCellGrid();
void LightBlock(int blockid); //void LightBlock(int blockid);
void CreateTraceTasks(); void CreateTraceTasks();
void LightSurface(const int taskid); void LightSurface(const int taskid);
void LightIndirect(const int taskid); void LightIndirect(const int taskid);
@ -126,7 +126,7 @@ private:
std::vector<TraceTask> traceTasks; std::vector<TraceTask> traceTasks;
int tracedTexels = 0; int tracedTexels = 0;
LightCellGrid grid; //LightCellGrid grid;
std::mutex mutex; std::mutex mutex;
int processed = 0; int processed = 0;