diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-06 23:59:18 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-06 23:59:18 +1000 |
commit | fe99ec69664c5ca5a400d80e060084ff78d9bb22 (patch) | |
tree | 6fbe0123c9a6cb5105e34ad2a0c26a1791fc363e /source/rendering | |
parent | fe4cc1961888db364bbc70cfe0e7a15ec27a5c5b (diff) |
Render the world in its own framebuffer
Diffstat (limited to 'source/rendering')
-rw-r--r-- | source/rendering/StarTilePainter.cpp | 25 | ||||
-rw-r--r-- | source/rendering/StarWorldPainter.cpp | 2 |
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(); |