summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-04-08 04:01:12 +0300
committerPerttu Ahola <celeron55@gmail.com>2012-04-08 04:01:12 +0300
commitd8edd3d0c87aeb5fcff4859a151e478f6f93932e (patch)
tree8bbe889ebfa6caa164e2b3181a131cece71f5d5e
parent1b078efd5fe3a80011339f90df06e5f55fdbadf3 (diff)
downloadminetest-d8edd3d0c87aeb5fcff4859a151e478f6f93932e.tar.gz
minetest-d8edd3d0c87aeb5fcff4859a151e478f6f93932e.tar.bz2
minetest-d8edd3d0c87aeb5fcff4859a151e478f6f93932e.zip
Make lava brighter by showing light sources at their full emitted light level
-rw-r--r--src/content_mapblock.cpp10
-rw-r--r--src/mapblock_mesh.cpp17
2 files changed, 26 insertions, 1 deletions
diff --git a/src/content_mapblock.cpp b/src/content_mapblock.cpp
index 8f102cd91..3184925a4 100644
--- a/src/content_mapblock.cpp
+++ b/src/content_mapblock.cpp
@@ -210,8 +210,16 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
top_is_same_liquid = true;
u16 l = 0;
+ // If this liquid emits light and doesn't contain light, draw
+ // it at what it emits, for an increased effect
+ u8 light_source = nodedef->get(n).light_source;
+ if(light_source != 0){
+ //l = decode_light(undiminish_light(light_source));
+ l = decode_light(light_source);
+ l = l | (l<<8);
+ }
// Use the light of the node on top if possible
- if(nodedef->get(ntop).param_type == CPT_LIGHT)
+ else if(nodedef->get(ntop).param_type == CPT_LIGHT)
l = getInteriorLight(ntop, 0, data);
// Otherwise use the light of this node (the liquid)
else
diff --git a/src/mapblock_mesh.cpp b/src/mapblock_mesh.cpp
index abe23855f..0e26161e2 100644
--- a/src/mapblock_mesh.cpp
+++ b/src/mapblock_mesh.cpp
@@ -183,6 +183,15 @@ static u8 getFaceLight(enum LightBank bank, MapNode n, MapNode n2,
else
light = l2;
+ // Boost light level for light sources
+ u8 light_source = MYMAX(ndef->get(n).light_source,
+ ndef->get(n2).light_source);
+ //if(light_source >= light)
+ //return decode_light(undiminish_light(light_source));
+ if(light_source > light)
+ //return decode_light(light_source);
+ light = light_source;
+
// Make some nice difference to different sides
// This makes light come from a corner
@@ -233,10 +242,13 @@ static u8 getSmoothLight(enum LightBank bank, v3s16 p, MeshMakeData *data)
u16 ambient_occlusion = 0;
u16 light = 0;
u16 light_count = 0;
+ u8 light_source_max = 0;
for(u32 i=0; i<8; i++)
{
MapNode n = data->m_vmanip.getNodeNoEx(p - dirs8[i]);
const ContentFeatures &f = ndef->get(n);
+ if(f.light_source > light_source_max)
+ light_source_max = f.light_source;
// Check f.solidness because fast-style leaves look
// better this way
if(f.param_type == CPT_LIGHT && f.solidness != 2)
@@ -255,6 +267,11 @@ static u8 getSmoothLight(enum LightBank bank, v3s16 p, MeshMakeData *data)
light /= light_count;
+ // Boost brightness around light sources
+ if(decode_light(light_source_max) >= light)
+ //return decode_light(undiminish_light(light_source_max));
+ return decode_light(light_source_max);
+
if(ambient_occlusion > 4)
{
ambient_occlusion -= 4;