From 01dec83e6c2f99df2eb58c0cf7a99f6bc568c6c3 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 4 Aug 2024 23:56:38 +0300 Subject: [PATCH] fix: underwater entities visibility --- src/graphics/render/WorldRenderer.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 08defc67..6c3f5e04 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -113,6 +113,10 @@ bool WorldRenderer::drawChunk( } void WorldRenderer::drawChunks(Chunks* chunks, Camera* camera, Shader* shader) { + auto assets = engine->getAssets(); + auto atlas = assets->get("blocks"); + + atlas->getTexture()->bind(); renderer->update(); // [warning] this whole method is not thread-safe for chunks @@ -186,21 +190,13 @@ void WorldRenderer::renderLevel( bool pause ) { auto assets = engine->getAssets(); - auto atlas = assets->get("blocks"); bool culling = engine->getSettings().graphics.frustumCulling.get(); float fogFactor = 15.0f / ((float)settings.chunks.loadDistance.get() - 2); - auto shader = assets->get("main"); - setupWorldShader(shader, camera, settings, fogFactor); - - skybox->bind(); - atlas->getTexture()->bind(); - - drawChunks(level->chunks.get(), camera, shader); - auto entityShader = assets->get("entity"); setupWorldShader(entityShader, camera, settings, fogFactor); + skybox->bind(); level->entities->render( assets, @@ -209,11 +205,16 @@ void WorldRenderer::renderLevel( delta, pause ); + modelBatch->render(); + + auto shader = assets->get("main"); + setupWorldShader(shader, camera, settings, fogFactor); + + drawChunks(level->chunks.get(), camera, shader); if (!pause) { scripting::on_frontend_render(); } - modelBatch->render(); skybox->unbind(); }