Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/rendering
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-07-06 23:59:18 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-07-06 23:59:18 +1000
commitfe99ec69664c5ca5a400d80e060084ff78d9bb22 (patch)
tree6fbe0123c9a6cb5105e34ad2a0c26a1791fc363e /source/rendering
parentfe4cc1961888db364bbc70cfe0e7a15ec27a5c5b (diff)
Render the world in its own framebuffer
Diffstat (limited to 'source/rendering')
-rw-r--r--source/rendering/StarTilePainter.cpp25
-rw-r--r--source/rendering/StarWorldPainter.cpp2
2 files changed, 18 insertions, 9 deletions
diff --git a/source/rendering/StarTilePainter.cpp b/source/rendering/StarTilePainter.cpp
index d0a7e5a..40b3de6 100644
--- a/source/rendering/StarTilePainter.cpp
+++ b/source/rendering/StarTilePainter.cpp
@@ -124,25 +124,32 @@ size_t TilePainter::TextureKeyHash::operator()(TextureKey const& key) const {
}
TilePainter::ChunkHash TilePainter::terrainChunkHash(WorldRenderData& renderData, Vec2I chunkIndex) {
- XXHash3 hasher;
+ //XXHash3 hasher;
+ static ByteArray buffer;
+ buffer.clear();
RectI tileRange = RectI::withSize(chunkIndex * RenderChunkSize, Vec2I::filled(RenderChunkSize)).padded(MaterialRenderProfileMaxNeighborDistance);
-
forEachRenderTile(renderData, tileRange, [&](Vec2I const&, RenderTile const& renderTile) {
- renderTile.hashPushTerrain(hasher);
- });
+ //renderTile.hashPushTerrain(hasher);
+ buffer.append((char*)&renderTile, offsetof(RenderTile, liquidId));
+ });
- return hasher.digest();
+ //return hasher.digest();
+ return XXH3_64bits(buffer.ptr(), buffer.size());
}
TilePainter::ChunkHash TilePainter::liquidChunkHash(WorldRenderData& renderData, Vec2I chunkIndex) {
- XXHash3 hasher;
+ ///XXHash3 hasher;
RectI tileRange = RectI::withSize(chunkIndex * RenderChunkSize, Vec2I::filled(RenderChunkSize)).padded(MaterialRenderProfileMaxNeighborDistance);
+ static ByteArray buffer;
+ buffer.clear();
forEachRenderTile(renderData, tileRange, [&](Vec2I const&, RenderTile const& renderTile) {
- renderTile.hashPushLiquid(hasher);
- });
+ //renderTile.hashPushLiquid(hasher);
+ buffer.append((char*)&renderTile.liquidId, sizeof(LiquidId) + sizeof(LiquidLevel));
+ });
- return hasher.digest();
+ //return hasher.digest();
+ return XXH3_64bits(buffer.ptr(), buffer.size());
}
TilePainter::QuadZLevel TilePainter::materialZLevel(uint32_t zLevel, MaterialId material, MaterialHue hue, MaterialColorVariant colorVariant) {
diff --git a/source/rendering/StarWorldPainter.cpp b/source/rendering/StarWorldPainter.cpp
index 7bcbb45..e033ee1 100644
--- a/source/rendering/StarWorldPainter.cpp
+++ b/source/rendering/StarWorldPainter.cpp
@@ -69,6 +69,8 @@ void WorldPainter::render(WorldRenderData& renderData, function<void()> lightWai
m_environmentPainter->renderSky(Vec2F(m_camera.screenSize()), renderData.skyRenderData);
m_environmentPainter->renderFrontOrbiters(orbiterAndPlanetRatio, Vec2F(m_camera.screenSize()), renderData.skyRenderData);
+ m_renderer->flush();
+
if (lightWaiter) {
auto start = Time::monotonicMicroseconds();
lightWaiter();