*
This commit is contained in:
@@ -127,8 +127,6 @@ public:
|
||||
class CacheHandlerBasic : public CacheHandler {
|
||||
Logger LOG = "CacheHandlerBasic";
|
||||
|
||||
std::thread ReadThread, ReadWriteThread;
|
||||
|
||||
struct DataTask {
|
||||
CacheDatabase::HASH Hash;
|
||||
std::shared_ptr<std::string> Data;
|
||||
@@ -144,6 +142,8 @@ class CacheHandlerBasic : public CacheHandler {
|
||||
SpinlockObject<std::vector<DataTask>> ReadedQueue;
|
||||
bool NeedShutdown = false;
|
||||
|
||||
std::thread ReadThread, ReadWriteThread;
|
||||
|
||||
public:
|
||||
using Ptr = std::shared_ptr<CacheHandlerBasic>;
|
||||
|
||||
|
||||
@@ -280,14 +280,14 @@ void ServerSession::atFreeDrawTime(GlobalTime gTime, float dTime) {
|
||||
auto &pair = changeOrAddList_removeList[p.Id];
|
||||
std::get<0>(pair).insert(p.Pos);
|
||||
} else if(l2 == ToClient::L2Content::ChunkNodes) {
|
||||
// PP_Content_ChunkNodes &p = *dynamic_cast<PP_Content_ChunkNodes*>(pack);
|
||||
// Pos::GlobalRegion rPos = p.Pos >> 2;
|
||||
// Pos::bvec4u cPos = p.Pos & 0x3;
|
||||
PP_Content_ChunkNodes &p = *dynamic_cast<PP_Content_ChunkNodes*>(pack);
|
||||
Pos::GlobalRegion rPos = p.Pos >> 2;
|
||||
Pos::bvec4u cPos = p.Pos & 0x3;
|
||||
|
||||
// Node *nodes = (Node*) Data.Worlds[p.Id].Regions[rPos].Chunks[cPos.x][cPos.y][cPos.z].Nodes;
|
||||
// std::copy((const Node*) p.Nodes, ((const Node*) p.Nodes)+16*16*16, nodes);
|
||||
// auto &pair = changeOrAddList_removeList[p.Id];
|
||||
// std::get<0>(pair).insert(p.Pos);
|
||||
Node *nodes = (Node*) Data.Worlds[p.Id].Regions[rPos].Chunks[cPos.x][cPos.y][cPos.z].Nodes;
|
||||
std::copy((const Node*) p.Nodes, ((const Node*) p.Nodes)+16*16*16, nodes);
|
||||
auto &pair = changeOrAddList_removeList[p.Id];
|
||||
std::get<0>(pair).insert(p.Pos);
|
||||
} else if(l2 == ToClient::L2Content::RemoveRegion) {
|
||||
PP_Content_RegionRemove &p = *dynamic_cast<PP_Content_RegionRemove*>(pack);
|
||||
|
||||
|
||||
@@ -73,7 +73,8 @@ void VulkanRenderSession::init(Vulkan *instance) {
|
||||
if(!DescriptorPool) {
|
||||
std::vector<VkDescriptorPoolSize> pool_sizes = {
|
||||
{VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 3},
|
||||
{VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 3}
|
||||
{VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 3},
|
||||
{VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 3}
|
||||
};
|
||||
|
||||
VkDescriptorPoolCreateInfo descriptor_pool = {};
|
||||
@@ -616,8 +617,8 @@ void VulkanRenderSession::onChunksChange(WorldId_t worldId, const std::unordered
|
||||
auto &table = External.ChunkVoxelMesh[worldId];
|
||||
|
||||
for(Pos::GlobalChunk pos : changeOrAddList) {
|
||||
Pos::GlobalRegion rPos = pos >> 4;
|
||||
Pos::bvec16u cPos = pos & 0xf;
|
||||
Pos::GlobalRegion rPos = pos >> 2;
|
||||
Pos::bvec4u cPos = pos & 0x3;
|
||||
|
||||
auto &buffers = table[pos];
|
||||
|
||||
@@ -884,7 +885,7 @@ std::vector<NodeVertexStatic> VulkanRenderSession::generateMeshForNodeChunks(con
|
||||
|
||||
v.Tex = nodes[x][y][z].NodeId;
|
||||
|
||||
if((y+1) < 16 || nodes[x][y+1][z].NodeId != 0) {
|
||||
if((y+1) >= 16 || nodes[x][y+1][z].NodeId == 0) {
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16+16;
|
||||
v.FZ = 135+z*16;
|
||||
@@ -892,28 +893,192 @@ std::vector<NodeVertexStatic> VulkanRenderSession::generateMeshForNodeChunks(con
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 15;
|
||||
v.FX += 16;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FZ += 15;
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16+16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 15;
|
||||
v.FZ += 15;
|
||||
v.FX += 16;
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX -= 15;
|
||||
v.FX -= 16;
|
||||
v.TU = 0;
|
||||
out.push_back(v);
|
||||
}
|
||||
|
||||
if((y-1) < 0 || nodes[x][y-1][z].NodeId == 0) {
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 16;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX = 135+x*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 16;
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FZ -= 16;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
}
|
||||
|
||||
if((x+1) >= 16 || nodes[x+1][y][z].NodeId == 0) {
|
||||
v.FX = 135+x*16+16;
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY += 16;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY += 16;
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FZ -= 16;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
}
|
||||
|
||||
if((x-1) < 0 || nodes[x-1][y][z].NodeId == 0) {
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY += 16;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY += 16;
|
||||
v.FZ += 16;
|
||||
v.TV = 65535;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY -= 16;
|
||||
v.TU = 0;
|
||||
out.push_back(v);
|
||||
}
|
||||
|
||||
if((z+1) >= 16 || nodes[x][y][z+1].NodeId == 0) {
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16+16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY += 16;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 16;
|
||||
v.TV = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 16;
|
||||
v.FY += 16;
|
||||
v.TV = 65535;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY -= 16;
|
||||
v.TU = 0;
|
||||
out.push_back(v);
|
||||
}
|
||||
|
||||
if((z-1) < 0 || nodes[x][y][z-1].NodeId == 0) {
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16;
|
||||
v.FZ = 135+z*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 16;
|
||||
v.TV = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FY += 16;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX = 135+x*16;
|
||||
v.FY = 135+y*16;
|
||||
v.TU = 0;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX += 16;
|
||||
v.FY += 16;
|
||||
v.TV = 65535;
|
||||
v.TU = 65535;
|
||||
out.push_back(v);
|
||||
|
||||
v.FX -= 16;
|
||||
v.TV = 0;
|
||||
out.push_back(v);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user