From 2cf9014160085303cda333334784ac4938edc086 Mon Sep 17 00:00:00 2001 From: DTA7 Date: Tue, 3 Oct 2017 01:23:49 +0200 Subject: Smooth lighting: Fix light leaking through edge-connected corners For solid nodes, the lighting at a corner becomes face-dependent, which means that only the four nodes in face-direction contribute to the lighting (getSmoothLightSolid). For special nodes, which use the lighting values at the eight corners of a node, the lighting is not face-dependent, but certain nodes of the eight surrounding nodes of a corner (here indices 4, 5, 6 and 7) can be obstructed. Ambient occlusion now also occurs for solid nodes, if two, three or four of the four nodes in face-direction are solid. --- src/content_mapblock.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/content_mapblock.cpp') diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp index 577fbc5f8..4e32e27ca 100644 --- a/src/content_mapblock.cpp +++ b/src/content_mapblock.cpp @@ -276,7 +276,7 @@ void MapblockMeshGenerator::drawCuboid(const aabb3f &box, void MapblockMeshGenerator::getSmoothLightFrame() { for (int k = 0; k < 8; ++k) { - u16 light = getSmoothLight(blockpos_nodes + p, light_dirs[k], data); + u16 light = getSmoothLightTransparent(blockpos_nodes + p, light_dirs[k], data); frame.lightsA[k] = light & 0xff; frame.lightsB[k] = light >> 8; } -- cgit v1.2.3