From a493d1521a7f6ba19ce411598d6f8814bd2111f5 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 16 Mar 2018 21:19:18 +0500 Subject: Improved RendererSectionData parsing data locality --- src/RendererWorld.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/RendererWorld.cpp') diff --git a/src/RendererWorld.cpp b/src/RendererWorld.cpp index 64cdffc..50d1fce 100644 --- a/src/RendererWorld.cpp +++ b/src/RendererWorld.cpp @@ -28,7 +28,15 @@ void RendererWorld::WorkerFunction(size_t workerId) { if (result != sections.end()) { if (result->second.GetHash() != gs->world.GetSection(result->first).GetHash() || forced) { sectionsMutex.unlock(); - auto data = std::make_unique(ParseSection(&gs->world, vec)); + SectionsData sections; + sections.section = gs->world.GetSection(vec); + sections.west = gs->world.GetSection(vec + Vector(1, 0, 0)); + sections.east = gs->world.GetSection(vec + Vector(-1, 0, 0)); + sections.top = gs->world.GetSection(vec + Vector(0, 1, 0)); + sections.bottom = gs->world.GetSection(vec + Vector(0, -1, 0)); + sections.north = gs->world.GetSection(vec + Vector(0, 0, 1)); + sections.south = gs->world.GetSection(vec + Vector(0, 0, -1)); + auto data = std::make_unique(ParseSection(sections)); data->forced = true; renderDataMutex.lock(); renderData.push(std::move(data)); @@ -44,7 +52,15 @@ void RendererWorld::WorkerFunction(size_t workerId) { } else { sectionsMutex.unlock(); - auto data = std::make_unique(ParseSection(&gs->world, vec)); + SectionsData sections; + sections.section = gs->world.GetSection(vec); + sections.west = gs->world.GetSection(vec + Vector(1, 0, 0)); + sections.east = gs->world.GetSection(vec + Vector(-1, 0, 0)); + sections.top = gs->world.GetSection(vec + Vector(0, 1, 0)); + sections.bottom = gs->world.GetSection(vec + Vector(0, -1, 0)); + sections.north = gs->world.GetSection(vec + Vector(0, 0, 1)); + sections.south = gs->world.GetSection(vec + Vector(0, 0, -1)); + auto data = std::make_unique(ParseSection(sections)); data->forced = true; renderDataMutex.lock(); renderData.push(std::move(data)); -- cgit v1.2.3