From 64f6f1738616f747a5956e4c4f023fb34e329f74 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 10:25:43 +0300 Subject: [PATCH 1/7] AABB blocks rotation support (WIP part 3) --- src/content/Content.cpp | 24 ++++++++++-------------- src/graphics/BlocksRenderer.cpp | 6 ------ src/voxels/Block.cpp | 1 + src/voxels/Block.h | 5 +++-- src/voxels/Chunks.cpp | 11 +++++++---- 5 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/content/Content.cpp b/src/content/Content.cpp index 64d986d0..5322a98d 100644 --- a/src/content/Content.cpp +++ b/src/content/Content.cpp @@ -27,20 +27,14 @@ Content* ContentBuilder::build() { // Generating runtime info def->rt.id = blockDefsIndices.size(); def->rt.emissive = *((uint32_t*)def->emission); - - // building hitbox grid 3d for raycasts - const AABB& hitbox = def->hitbox; - for (uint gy = 0; gy < BLOCK_AABB_GRID; gy++) { - for (uint gz = 0; gz < BLOCK_AABB_GRID; gz++) { - for (uint gx = 0; gx < BLOCK_AABB_GRID; gx++) { - float x = gx / float(BLOCK_AABB_GRID); - float y = gy / float(BLOCK_AABB_GRID); - float z = gz / float(BLOCK_AABB_GRID); - bool flag = hitbox.inside({x, y, z}); - if (!flag) - def->rt.solid = false; - def->rt.hitboxGrid[gy][gz][gx] = flag; - } + def->rt.solid = def->model == BlockModel::block; + + if (def->rotatable) { + const AABB& hitbox = def->hitbox; + for (uint i = 0; i < BlockRotProfile::MAX_COUNT; i++) { + AABB aabb = hitbox; + def->rotations.variants[i].transform(aabb); + def->rt.hitboxes[i] = aabb; } } @@ -48,6 +42,8 @@ Content* ContentBuilder::build() { if (groups->find(def->drawGroup) == groups->end()) { groups->insert(def->drawGroup); } + + } ContentIndices* indices = new ContentIndices(blockDefsIndices); return new Content(indices, groups, blockDefs); diff --git a/src/graphics/BlocksRenderer.cpp b/src/graphics/BlocksRenderer.cpp index f9a9f573..fcd72ad8 100644 --- a/src/graphics/BlocksRenderer.cpp +++ b/src/graphics/BlocksRenderer.cpp @@ -372,7 +372,6 @@ vec4 BlocksRenderer::pickSoftLight(float x, float y, float z, return pickSoftLight({int(round(x)), int(round(y)), int(round(z))}, right, up); } -#include void BlocksRenderer::render(const voxel* voxels) { int begin = chunk->bottom * (CHUNK_W * CHUNK_D); int end = chunk->top * (CHUNK_W * CHUNK_D); @@ -410,14 +409,9 @@ void BlocksRenderer::render(const voxel* voxels) { AABB hitbox = def.hitbox; hitbox.a = vec3(1.0f)-hitbox.a; hitbox.b = vec3(1.0f)-hitbox.b; - std::cout << hitbox.a.x << " " << hitbox.a.y << " " << hitbox.a.z << " --- "; - std::cout << hitbox.b.x << " " << hitbox.b.y << " " << hitbox.b.z << std::endl; vec3 size = hitbox.size(); - - std::cout << "s " << size.x << " " << size.y << " " << size.z << std::endl; vec3 off = hitbox.min(); - std::cout << "m " << off.x << " " << off.y << " " << off.z << std::endl; blockCubeShaded(ivec3(x,y,z), off, size, texfaces, &def, vox.states); break; } diff --git a/src/voxels/Block.cpp b/src/voxels/Block.cpp index 085646ed..d794cfbc 100644 --- a/src/voxels/Block.cpp +++ b/src/voxels/Block.cpp @@ -30,4 +30,5 @@ Block::Block(std::string name) Block::Block(std::string name, std::string texture) : name(name), textureFaces{texture,texture,texture,texture,texture,texture} { + rotations = BlockRotProfile::PIPE; } diff --git a/src/voxels/Block.h b/src/voxels/Block.h index fa6002db..8aa90ed1 100644 --- a/src/voxels/Block.h +++ b/src/voxels/Block.h @@ -28,7 +28,8 @@ struct CoordSystem { }; struct BlockRotProfile { - CoordSystem variants[16]; + static const int MAX_COUNT = 16; + CoordSystem variants[MAX_COUNT]; /* Wood logs, pillars, pipes 3 orientations supported @@ -65,7 +66,7 @@ public: blockid_t id; bool solid = true; bool emissive = false; - bool hitboxGrid[BLOCK_AABB_GRID][BLOCK_AABB_GRID][BLOCK_AABB_GRID]; + AABB hitboxes[BlockRotProfile::MAX_COUNT]; } rt; Block(std::string name); diff --git a/src/voxels/Chunks.cpp b/src/voxels/Chunks.cpp index c98781c6..698e6385 100644 --- a/src/voxels/Chunks.cpp +++ b/src/voxels/Chunks.cpp @@ -73,11 +73,14 @@ const AABB* Chunks::isObstacle(float x, float y, float z){ return nullptr; const Block* def = contentIds->getBlockDef(v->id); if (def->obstacle) { + const AABB& hitbox = def->rotatable + ? def->rt.hitboxes[v->states & BLOCK_ROT_MASK] + : def->hitbox; if (def->rt.solid) { - return &def->hitbox; + return &hitbox; } else { - if (def->hitbox.inside({x - ix, y - iy, z - iz})) - return &def->hitbox; + if (hitbox.inside({x - ix, y - iy, z - iz})) + return &hitbox; return nullptr; } } @@ -222,7 +225,7 @@ voxel* Chunks::rayCast(vec3 start, // TODO: replace this dumb solution with something better if (def && !def->rt.solid) { const int gridSize = BLOCK_AABB_GRID * 2; - const AABB& box = def->hitbox; + const AABB& box = def->rotatable ? def->rt.hitboxes[voxel->states & BLOCK_ROT_MASK] : def->hitbox; const int subs = gridSize; iend = vec3(ix, iy, iz); end -= iend; From 788234ab9432a59aad2630ad5c7fb85ae111ec0b Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 10:51:44 +0300 Subject: [PATCH 2/7] New trackbar + pane lights fix --- src/frontend/WorldRenderer.cpp | 6 ++++-- src/frontend/WorldRenderer.h | 2 ++ src/frontend/hud.cpp | 16 ++++++++++++---- src/frontend/hud.h | 5 +---- src/frontend/screens.cpp | 2 +- src/graphics/BlocksRenderer.cpp | 15 ++++++--------- 6 files changed, 26 insertions(+), 20 deletions(-) diff --git a/src/frontend/WorldRenderer.cpp b/src/frontend/WorldRenderer.cpp index c562f8a4..e065542c 100644 --- a/src/frontend/WorldRenderer.cpp +++ b/src/frontend/WorldRenderer.cpp @@ -128,7 +128,7 @@ void WorldRenderer::drawChunks(Chunks* chunks, void WorldRenderer::draw(const GfxContext& pctx, Camera* camera){ EngineSettings& settings = engine->getSettings(); skybox->refresh(level->world->daytime, - fmax(1.0f, 10.0f/(settings.chunks.loadDistance-2)), 4); + fmax(1.0f, 10.0f/(settings.chunks.loadDistance-2))+fog*2.0f, 4); const Content* content = level->content; const ContentIndices* contentIds = content->indices; @@ -290,4 +290,6 @@ void WorldRenderer::drawBorders(int sx, int sy, int sz, int ex, int ey, int ez) sx, i, sz, 0, 0.8f, 0, 1); } lineBatch->render(); -} \ No newline at end of file +} + +float WorldRenderer::fog = 0.0f; \ No newline at end of file diff --git a/src/frontend/WorldRenderer.h b/src/frontend/WorldRenderer.h index fc5c4b4e..fda717b4 100644 --- a/src/frontend/WorldRenderer.h +++ b/src/frontend/WorldRenderer.h @@ -40,6 +40,8 @@ public: void draw(const GfxContext& context, Camera* camera); void drawDebug(const GfxContext& context, Camera* camera); void drawBorders(int sx, int sy, int sz, int ex, int ey, int ez); + + static float fog; }; diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index ef97acd2..036f4072 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -56,14 +56,12 @@ inline Label* create_label(gui::wstringsupplier supplier) { HudRenderer::HudRenderer(Engine* engine, Level* level, - const ContentGfxCache* cache, - WorldRenderer* renderer) + const ContentGfxCache* cache) : level(level), assets(engine->getAssets()), batch(new Batch2D(1024)), gui(engine->getGUI()), - cache(cache), - renderer(renderer) { + cache(cache) { auto menu = gui->getMenu(); blocksPreview = new BlocksPreview(assets->getShader("ui3d"), assets->getAtlas("blocks"), @@ -160,6 +158,16 @@ HudRenderer::HudRenderer(Engine* engine, }); panel->add(bar); } + { + TrackBar* bar = new TrackBar(0.0f, 1.0f, 0.0f, 0.005f, 8); + bar->supplier([=]() { + return WorldRenderer::fog; + }); + bar->consumer([=](double val) { + WorldRenderer::fog = val; + }); + panel->add(bar); + } { Panel* checkpanel = new Panel(vec2(400, 32), vec4(5.0f), 1.0f); checkpanel->color(vec4(0.0f)); diff --git a/src/frontend/hud.h b/src/frontend/hud.h index 9d2e7f2e..b7df1267 100644 --- a/src/frontend/hud.h +++ b/src/frontend/hud.h @@ -42,13 +42,10 @@ class HudRenderer { std::shared_ptr debugPanel; gui::GUI* gui; const ContentGfxCache* const cache; - WorldRenderer* renderer; - public: HudRenderer(Engine* engine, Level* level, - const ContentGfxCache* cache, - WorldRenderer* renderer); + const ContentGfxCache* cache); ~HudRenderer(); void update(); diff --git a/src/frontend/screens.cpp b/src/frontend/screens.cpp index 9855cde7..0eb07e27 100644 --- a/src/frontend/screens.cpp +++ b/src/frontend/screens.cpp @@ -96,7 +96,7 @@ LevelScreen::LevelScreen(Engine* engine, Level* level) controller = new LevelController(settings, level); cache = new ContentGfxCache(level->content, engine->getAssets()); worldRenderer = new WorldRenderer(engine, level, cache); - hud = new HudRenderer(engine, level, cache, worldRenderer); + hud = new HudRenderer(engine, level, cache); backlight = settings.graphics.backlight; } diff --git a/src/graphics/BlocksRenderer.cpp b/src/graphics/BlocksRenderer.cpp index fcd72ad8..32ed4e32 100644 --- a/src/graphics/BlocksRenderer.cpp +++ b/src/graphics/BlocksRenderer.cpp @@ -251,21 +251,18 @@ void BlocksRenderer::blockCubeShaded(const ivec3& icoord, coord += orient.fix; loff -= orient.fix; } - - vec3 fX(X); - vec3 fY(Y); vec3 fZ(Z); - vec3 local = offset.x*vec3(X)+offset.y*vec3(Y)+offset.z*vec3(-Z); - //local -= loff; + vec3 local = offset.x*vec3(X)+offset.y*vec3(Y)+offset.z*-fZ; + face(coord, X, Y, Z, Z+loff, local-size.z*fZ, size.x, size.y, size.z, texfaces[5]); face(coord+X, -X, Y, -Z, Z-Z-X+loff, local-size.z*fZ, size.x, size.y, 0.0f, texfaces[4]); - face(coord+Y, X, -Z, Y, Y-Y+loff, local, size.x, size.z, 0.0f, texfaces[3]); //; - face(coord+X, -X, -Z, -Y, -Y+Z+loff, local, size.x, size.z, 0.0f, texfaces[2]); //; + face(coord+Y, X, -Z, Y, Y-Y+loff, local, size.x, size.z, 0.0f, texfaces[3]); + face(coord+X, -X, -Z, -Y, -X-Y+loff, local, size.x, size.z, 0.0f, texfaces[2]); - face(coord+X, -Z, Y, X, X-X+loff, local, size.z, size.y, 0.0f, texfaces[1]); //; - face(coord+Y, -Z, -Y, -X, -X+Z+loff, local, size.z, size.y, 0.0f, texfaces[0]); //; + face(coord+X, -Z, Y, X, X-X+loff, local, size.z, size.y, 0.0f, texfaces[1]); + face(coord+Y, -Z, -Y, -X, -X-Y-Z+loff, local, size.z, size.y, 0.0f, texfaces[0]); } /* Fastest solid shaded blocks render method */ From 81704140a7ed0d8f34059f567449cc66cfd8d2d3 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 11:13:09 +0300 Subject: [PATCH 3/7] Added pane rotation profile --- res/content/base/blocks/pane.json | 2 +- src/content/ContentLoader.cpp | 2 ++ src/graphics/BlocksRenderer.cpp | 2 +- src/voxels/Block.cpp | 11 +++++++++++ src/voxels/Block.h | 6 +++--- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/res/content/base/blocks/pane.json b/res/content/base/blocks/pane.json index d2379085..f82f9e2d 100644 --- a/res/content/base/blocks/pane.json +++ b/res/content/base/blocks/pane.json @@ -11,5 +11,5 @@ "hitbox": [0.0, 0.0, 0.0, 1.0, 1.0, 0.2], "light-passing": true, "sky-light-passing": true, - "rotation": "pipe" + "rotation": "pane" } diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index 01db3ecd..39d0d091 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -59,6 +59,8 @@ Block* ContentLoader::loadBlock(string name, path file) { def->rotatable = profile != "none"; if (profile == "pipe") { def->rotations = BlockRotProfile::PIPE; + } else if (profile == "pane") { + def->rotations = BlockRotProfile::PANE; } else if (profile != "none") { cerr << "unknown rotation profile " << profile << endl; def->rotatable = false; diff --git a/src/graphics/BlocksRenderer.cpp b/src/graphics/BlocksRenderer.cpp index 32ed4e32..0721c88f 100644 --- a/src/graphics/BlocksRenderer.cpp +++ b/src/graphics/BlocksRenderer.cpp @@ -262,7 +262,7 @@ void BlocksRenderer::blockCubeShaded(const ivec3& icoord, face(coord+X, -X, -Z, -Y, -X-Y+loff, local, size.x, size.z, 0.0f, texfaces[2]); face(coord+X, -Z, Y, X, X-X+loff, local, size.z, size.y, 0.0f, texfaces[1]); - face(coord+Y, -Z, -Y, -X, -X-Y-Z+loff, local, size.z, size.y, 0.0f, texfaces[0]); + face(coord+Y, -Z, -Y, -X, -X-Y+loff, local, size.z, size.y, 0.0f, texfaces[0]); } /* Fastest solid shaded blocks render method */ diff --git a/src/voxels/Block.cpp b/src/voxels/Block.cpp index d794cfbc..f8c6594f 100644 --- a/src/voxels/Block.cpp +++ b/src/voxels/Block.cpp @@ -21,6 +21,17 @@ const BlockRotProfile BlockRotProfile::PIPE {{ {{1, 0, 0}, {0, 0, 1}, {0, -1, 0}, {0, 0, -1}, {0, 1, 0}}, }}; +const BlockRotProfile BlockRotProfile::PANE {{ + // North + {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 0, 0}, {0, 0, 0}}, + // East + {{0, 0, -1}, {0, 1, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 1}}, + // South + {{-1, 0, 0}, {0, 1, 0}, {0, 0, -1}, {1, 0, -1}, {1, 0, 1}}, + // West + {{0, 0, 1}, {0, 1, 0}, {-1, 0, 0}, {0, 0, -1}, {1, 0, 0}}, +}}; + Block::Block(std::string name) : name(name), textureFaces {"notfound","notfound","notfound", diff --git a/src/voxels/Block.h b/src/voxels/Block.h index 8aa90ed1..c250b89e 100644 --- a/src/voxels/Block.h +++ b/src/voxels/Block.h @@ -31,10 +31,10 @@ struct BlockRotProfile { static const int MAX_COUNT = 16; CoordSystem variants[MAX_COUNT]; - /* Wood logs, pillars, pipes - 3 orientations supported - */ + /* Wood logs, pillars, pipes */ static const BlockRotProfile PIPE; + /* Doors, signs and other panes */ + static const BlockRotProfile PANE; }; enum class BlockModel { From d9bc17e9b69cf29fbc28f02b0119ebbcaab3171a Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 11:24:30 +0300 Subject: [PATCH 4/7] TrackBar height decreased --- src/frontend/gui/controls.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/frontend/gui/controls.cpp b/src/frontend/gui/controls.cpp index 818aaaf7..491367bf 100644 --- a/src/frontend/gui/controls.cpp +++ b/src/frontend/gui/controls.cpp @@ -214,8 +214,17 @@ void InputBindBox::keyPressed(int key) { } // ================================ TrackBar ================================== -TrackBar::TrackBar(double min, double max, double value, double step, int trackWidth) - : UINode(vec2(), vec2(32)), min(min), max(max), value(value), step(step), trackWidth(trackWidth) { +TrackBar::TrackBar(double min, + double max, + double value, + double step, + int trackWidth) + : UINode(vec2(), vec2(26)), + min(min), + max(max), + value(value), + step(step), + trackWidth(trackWidth) { color(vec4(0.f, 0.f, 0.f, 0.4f)); } @@ -232,7 +241,8 @@ void TrackBar::draw(Batch2D* batch, Assets* assets) { float t = (value - min) / (max-min+trackWidth*step); batch->color = trackColor; - batch->rect(coord.x + width * t, coord.y, size_.x * (trackWidth / (max-min+trackWidth*step) * step), size_.y); + int actualWidth = size_.x * (trackWidth / (max-min+trackWidth*step) * step); + batch->rect(coord.x + width * t, coord.y, actualWidth, size_.y); } void TrackBar::supplier(doublesupplier supplier) { From a69152669337cd1e35b53c1330a629a553a8eaf9 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 11:39:59 +0300 Subject: [PATCH 5/7] Pane place direction fixed --- src/logic/PlayerController.cpp | 31 +++++++++++++++++++++++-------- src/voxels/Block.cpp | 4 ++-- src/voxels/Block.h | 1 + src/voxels/voxel.h | 5 +++++ 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index 46d6675e..fd877b3d 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -27,6 +27,7 @@ const float CROUCH_SHIFT_Y = -0.2f; using glm::vec2; using glm::vec3; +using std::string; CameraControl::CameraControl(Player* player, const CameraSettings& settings) : player(player), @@ -218,14 +219,28 @@ void PlayerController::updateInteraction(){ int z = (int)iend.z; uint8_t states = 0; - if (contentIds->getBlockDef(player->choosenBlock)->rotatable){ - if (abs(norm.x) > abs(norm.z)){ - if (abs(norm.x) > abs(norm.y)) states = BLOCK_DIR_X; - if (abs(norm.x) < abs(norm.y)) states = BLOCK_DIR_Y; - } - if (abs(norm.x) < abs(norm.z)){ - if (abs(norm.z) > abs(norm.y)) states = BLOCK_DIR_Z; - if (abs(norm.z) < abs(norm.y)) states = BLOCK_DIR_Y; + Block* def = contentIds->getBlockDef(player->choosenBlock); + if (def->rotatable){ + const string& name = def->rotations.name; + if (name == "pipe") { + if (abs(norm.x) > abs(norm.z)){ + if (abs(norm.x) > abs(norm.y)) states = BLOCK_DIR_X; + if (abs(norm.x) < abs(norm.y)) states = BLOCK_DIR_Y; + } + if (abs(norm.x) < abs(norm.z)){ + if (abs(norm.z) > abs(norm.y)) states = BLOCK_DIR_Z; + if (abs(norm.z) < abs(norm.y)) states = BLOCK_DIR_Y; + } + } else if (name == "pane") { + vec3 vec = camera->dir; + if (abs(vec.x) > abs(vec.z)){ + if (vec.x > 0.0f) states = BLOCK_DIR_EAST; + if (vec.x < 0.0f) states = BLOCK_DIR_WEST; + } + if (abs(vec.x) < abs(vec.z)){ + if (vec.z > 0.0f) states = BLOCK_DIR_SOUTH; + if (vec.z < 0.0f) states = BLOCK_DIR_NORTH; + } } } diff --git a/src/voxels/Block.cpp b/src/voxels/Block.cpp index f8c6594f..aa9203a7 100644 --- a/src/voxels/Block.cpp +++ b/src/voxels/Block.cpp @@ -12,7 +12,7 @@ void CoordSystem::transform(AABB& aabb) { aabb.b += fix2; } -const BlockRotProfile BlockRotProfile::PIPE {{ +const BlockRotProfile BlockRotProfile::PIPE {"pipe", { // Vertical {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 0, 0}, {0, 0, 0}}, // X-Aligned @@ -21,7 +21,7 @@ const BlockRotProfile BlockRotProfile::PIPE {{ {{1, 0, 0}, {0, 0, 1}, {0, -1, 0}, {0, 0, -1}, {0, 1, 0}}, }}; -const BlockRotProfile BlockRotProfile::PANE {{ +const BlockRotProfile BlockRotProfile::PANE {"pane", { // North {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 0, 0}, {0, 0, 0}}, // East diff --git a/src/voxels/Block.h b/src/voxels/Block.h index c250b89e..565bc43b 100644 --- a/src/voxels/Block.h +++ b/src/voxels/Block.h @@ -29,6 +29,7 @@ struct CoordSystem { struct BlockRotProfile { static const int MAX_COUNT = 16; + std::string name; CoordSystem variants[MAX_COUNT]; /* Wood logs, pillars, pipes */ diff --git a/src/voxels/voxel.h b/src/voxels/voxel.h index 65fe32db..502cfc58 100644 --- a/src/voxels/voxel.h +++ b/src/voxels/voxel.h @@ -7,6 +7,11 @@ const int BLOCK_DIR_X = 0x1; const int BLOCK_DIR_Y = 0x0; const int BLOCK_DIR_Z = 0x2; +const int BLOCK_DIR_NORTH = 0x0; +const int BLOCK_DIR_WEST = 0x1; +const int BLOCK_DIR_SOUTH = 0x2; +const int BLOCK_DIR_EAST = 0x3; + // limited to 16 block orientations const int BLOCK_ROT_MASK = 0xF; From 2e98aa39d9ca5e06f8899689125c3606a6b19c32 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 14:05:36 +0300 Subject: [PATCH 6/7] Minor refactor --- src/core_defs.h | 2 ++ src/voxels/Block.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core_defs.h b/src/core_defs.h index f0c46afe..def3ce66 100644 --- a/src/core_defs.h +++ b/src/core_defs.h @@ -5,6 +5,8 @@ const int BLOCK_AIR = 0; +const std::string TEXTURE_NOTFOUND = "notfound"; + const std::string BIND_MOVE_FORWARD = "movement.forward"; const std::string BIND_MOVE_BACK = "movement.back"; const std::string BIND_MOVE_LEFT = "movement.left"; diff --git a/src/voxels/Block.cpp b/src/voxels/Block.cpp index aa9203a7..6a1997b6 100644 --- a/src/voxels/Block.cpp +++ b/src/voxels/Block.cpp @@ -1,5 +1,7 @@ #include "Block.h" +#include "../core_defs.h" + using glm::vec3; void CoordSystem::transform(AABB& aabb) { @@ -34,8 +36,8 @@ const BlockRotProfile BlockRotProfile::PANE {"pane", { Block::Block(std::string name) : name(name), - textureFaces {"notfound","notfound","notfound", - "notfound","notfound","notfound",} { + textureFaces {TEXTURE_NOTFOUND,TEXTURE_NOTFOUND,TEXTURE_NOTFOUND, + TEXTURE_NOTFOUND,TEXTURE_NOTFOUND,TEXTURE_NOTFOUND,} { rotations = BlockRotProfile::PIPE; } From af2786164a2d7f5df88d9998b4880dc1a9236093 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 5 Dec 2023 14:10:50 +0300 Subject: [PATCH 7/7] BlocksRenderer pseudo-lights update --- src/graphics/BlocksRenderer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/graphics/BlocksRenderer.cpp b/src/graphics/BlocksRenderer.cpp index 0721c88f..c0579bc4 100644 --- a/src/graphics/BlocksRenderer.cpp +++ b/src/graphics/BlocksRenderer.cpp @@ -126,9 +126,9 @@ void BlocksRenderer::face(const ivec3& coord, return; } - const vec3 sunVector = vec3(0.431934f, 0.863868f, 0.259161f); + const vec3 sunVector = vec3(0.411934f, 0.863868f, 0.279161f); float d = glm::dot(vec3(axisZ.x, axisZ.y, axisZ.z), sunVector); - d = 0.75f + d*0.25f; + d = 0.7f + d*0.3f; vec4 tint(d);