mirror of
https://github.com/minetest/minetest.git
synced 2024-11-09 17:23:45 +01:00
Make lava brighter by showing light sources at their full emitted light level
This commit is contained in:
parent
1b078efd5f
commit
d8edd3d0c8
@ -210,8 +210,16 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
|
|||||||
top_is_same_liquid = true;
|
top_is_same_liquid = true;
|
||||||
|
|
||||||
u16 l = 0;
|
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
|
// 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);
|
l = getInteriorLight(ntop, 0, data);
|
||||||
// Otherwise use the light of this node (the liquid)
|
// Otherwise use the light of this node (the liquid)
|
||||||
else
|
else
|
||||||
|
@ -183,6 +183,15 @@ static u8 getFaceLight(enum LightBank bank, MapNode n, MapNode n2,
|
|||||||
else
|
else
|
||||||
light = l2;
|
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
|
// Make some nice difference to different sides
|
||||||
|
|
||||||
// This makes light come from a corner
|
// 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 ambient_occlusion = 0;
|
||||||
u16 light = 0;
|
u16 light = 0;
|
||||||
u16 light_count = 0;
|
u16 light_count = 0;
|
||||||
|
u8 light_source_max = 0;
|
||||||
for(u32 i=0; i<8; i++)
|
for(u32 i=0; i<8; i++)
|
||||||
{
|
{
|
||||||
MapNode n = data->m_vmanip.getNodeNoEx(p - dirs8[i]);
|
MapNode n = data->m_vmanip.getNodeNoEx(p - dirs8[i]);
|
||||||
const ContentFeatures &f = ndef->get(n);
|
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
|
// Check f.solidness because fast-style leaves look
|
||||||
// better this way
|
// better this way
|
||||||
if(f.param_type == CPT_LIGHT && f.solidness != 2)
|
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;
|
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)
|
if(ambient_occlusion > 4)
|
||||||
{
|
{
|
||||||
ambient_occlusion -= 4;
|
ambient_occlusion -= 4;
|
||||||
|
Loading…
Reference in New Issue
Block a user