diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-04-24 12:31:19 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-04-24 12:31:19 +0300 |
commit | b21c7de3eda09b9117123639589c0521ce243afd (patch) | |
tree | c7ddb37719eb6e61b4cb5cf35b5b5fb3dcdc07ba /src | |
parent | 8c1f7a0dd27782cfc85dce624ccc4e3276f18776 (diff) | |
download | minetest-b21c7de3eda09b9117123639589c0521ce243afd.tar.gz minetest-b21c7de3eda09b9117123639589c0521ce243afd.tar.bz2 minetest-b21c7de3eda09b9117123639589c0521ce243afd.zip |
Added a setting for disabling smooth lighting. Updated changelog.
Diffstat (limited to 'src')
-rw-r--r-- | src/defaultsettings.cpp | 1 | ||||
-rw-r--r-- | src/mapblock.cpp | 172 |
2 files changed, 92 insertions, 81 deletions
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index d1e9d45cd..fc63856ba 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -41,6 +41,7 @@ void set_default_settings() g_settings.setDefault("enable_fog", "true"); g_settings.setDefault("new_style_water", "false"); g_settings.setDefault("new_style_leaves", "true"); + g_settings.setDefault("smooth_lighting", "true"); g_settings.setDefault("frametime_graph", "false"); g_settings.setDefault("enable_texture_atlas", "true"); g_settings.setDefault("texture_path", ""); diff --git a/src/mapblock.cpp b/src/mapblock.cpp index 69834b56a..824f7dc8a 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -400,7 +400,8 @@ void updateFastFaceRow( core::array<FastFace> &dest, NodeModMap &temp_mods, VoxelManipulator &vmanip, - v3s16 blockpos_nodes) + v3s16 blockpos_nodes, + bool smooth_lighting) { v3s16 p = startpos; @@ -508,50 +509,53 @@ void updateFastFaceRow( scale.Z = continuous_tiles_count; } - //u8 li = decode_light(light); + if(smooth_lighting == false) + li0 = li1 = li2 = li3 = decode_light(light); // If node at sp (tile0) is more solid if(mf == 1) { - if(face_dir == v3s16(0,0,1)) + if(smooth_lighting) { - // Going along X+, faces in Z+ - li0 = getSmoothLight(p_map_first+v3s16(0,0,1), - vmanip, daynight_ratio); - li1 = getSmoothLight(p_map+v3s16(1,0,1), - vmanip, daynight_ratio); - li2 = getSmoothLight(p_map+v3s16(1,1,1), - vmanip, daynight_ratio); - li3 = getSmoothLight(p_map_first+v3s16(0,1,1), - vmanip, daynight_ratio); - } - else if(face_dir == v3s16(0,1,0)) - { - // Going along X+, faces in Y+ - li0 = getSmoothLight(p_map_first+v3s16(0,1,1), - vmanip, daynight_ratio); - li1 = getSmoothLight(p_map+v3s16(1,1,1), - vmanip, daynight_ratio); - li2 = getSmoothLight(p_map+v3s16(1,1,0), - vmanip, daynight_ratio); - li3 = getSmoothLight(p_map_first+v3s16(0,1,0), - vmanip, daynight_ratio); - } - else if(face_dir == v3s16(1,0,0)) - { - // Going along Z+, faces in X+ - li0 = getSmoothLight(p_map_first+v3s16(1,0,1), - vmanip, daynight_ratio); - li1 = getSmoothLight(p_map+v3s16(1,0,0), - vmanip, daynight_ratio); - li2 = getSmoothLight(p_map+v3s16(1,1,0), - vmanip, daynight_ratio); - li3 = getSmoothLight(p_map_first+v3s16(1,1,1), - vmanip, daynight_ratio); + if(face_dir == v3s16(0,0,1)) + { + // Going along X+, faces in Z+ + li0 = getSmoothLight(p_map_first+v3s16(0,0,1), + vmanip, daynight_ratio); + li1 = getSmoothLight(p_map+v3s16(1,0,1), + vmanip, daynight_ratio); + li2 = getSmoothLight(p_map+v3s16(1,1,1), + vmanip, daynight_ratio); + li3 = getSmoothLight(p_map_first+v3s16(0,1,1), + vmanip, daynight_ratio); + } + else if(face_dir == v3s16(0,1,0)) + { + // Going along X+, faces in Y+ + li0 = getSmoothLight(p_map_first+v3s16(0,1,1), + vmanip, daynight_ratio); + li1 = getSmoothLight(p_map+v3s16(1,1,1), + vmanip, daynight_ratio); + li2 = getSmoothLight(p_map+v3s16(1,1,0), + vmanip, daynight_ratio); + li3 = getSmoothLight(p_map_first+v3s16(0,1,0), + vmanip, daynight_ratio); + } + else if(face_dir == v3s16(1,0,0)) + { + // Going along Z+, faces in X+ + li0 = getSmoothLight(p_map_first+v3s16(1,0,1), + vmanip, daynight_ratio); + li1 = getSmoothLight(p_map+v3s16(1,0,0), + vmanip, daynight_ratio); + li2 = getSmoothLight(p_map+v3s16(1,1,0), + vmanip, daynight_ratio); + li3 = getSmoothLight(p_map_first+v3s16(1,1,1), + vmanip, daynight_ratio); + } + else assert(0); } - else assert(0); - //makeFastFace(tile0, li, li, li, li, makeFastFace(tile0, li0, li1, li2, li3, sp, face_dir, scale, posRelative_f, dest); @@ -559,49 +563,51 @@ void updateFastFaceRow( // If node at sp is less solid (mf == 2) else { - // Offset to the actual solid block - p_map += face_dir; - p_map_first += face_dir; - - if(face_dir == v3s16(0,0,1)) + if(smooth_lighting) { - // Going along X+, faces in Z- - li0 = getSmoothLight(p_map+v3s16(1,0,0), - vmanip, daynight_ratio); - li1 = getSmoothLight(p_map_first+v3s16(0,0,0), - vmanip, daynight_ratio); - li2 = getSmoothLight(p_map_first+v3s16(0,1,0), - vmanip, daynight_ratio); - li3 = getSmoothLight(p_map+v3s16(1,1,0), - vmanip, daynight_ratio); - } - else if(face_dir == v3s16(0,1,0)) - { - // Going along X+, faces in Y- - li0 = getSmoothLight(p_map_first+v3s16(0,0,0), - vmanip, daynight_ratio); - li1 = getSmoothLight(p_map+v3s16(1,0,0), - vmanip, daynight_ratio); - li2 = getSmoothLight(p_map+v3s16(1,0,1), - vmanip, daynight_ratio); - li3 = getSmoothLight(p_map_first+v3s16(0,0,1), - vmanip, daynight_ratio); - } - else if(face_dir == v3s16(1,0,0)) - { - // Going along Z+, faces in X- - li0 = getSmoothLight(p_map_first+v3s16(0,0,0), - vmanip, daynight_ratio); - li1 = getSmoothLight(p_map+v3s16(0,0,1), - vmanip, daynight_ratio); - li2 = getSmoothLight(p_map+v3s16(0,1,1), - vmanip, daynight_ratio); - li3 = getSmoothLight(p_map_first+v3s16(0,1,0), - vmanip, daynight_ratio); + // Offset to the actual solid block + p_map += face_dir; + p_map_first += face_dir; + + if(face_dir == v3s16(0,0,1)) + { + // Going along X+, faces in Z- + li0 = getSmoothLight(p_map+v3s16(1,0,0), + vmanip, daynight_ratio); + li1 = getSmoothLight(p_map_first+v3s16(0,0,0), + vmanip, daynight_ratio); + li2 = getSmoothLight(p_map_first+v3s16(0,1,0), + vmanip, daynight_ratio); + li3 = getSmoothLight(p_map+v3s16(1,1,0), + vmanip, daynight_ratio); + } + else if(face_dir == v3s16(0,1,0)) + { + // Going along X+, faces in Y- + li0 = getSmoothLight(p_map_first+v3s16(0,0,0), + vmanip, daynight_ratio); + li1 = getSmoothLight(p_map+v3s16(1,0,0), + vmanip, daynight_ratio); + li2 = getSmoothLight(p_map+v3s16(1,0,1), + vmanip, daynight_ratio); + li3 = getSmoothLight(p_map_first+v3s16(0,0,1), + vmanip, daynight_ratio); + } + else if(face_dir == v3s16(1,0,0)) + { + // Going along Z+, faces in X- + li0 = getSmoothLight(p_map_first+v3s16(0,0,0), + vmanip, daynight_ratio); + li1 = getSmoothLight(p_map+v3s16(0,0,1), + vmanip, daynight_ratio); + li2 = getSmoothLight(p_map+v3s16(0,1,1), + vmanip, daynight_ratio); + li3 = getSmoothLight(p_map_first+v3s16(0,1,0), + vmanip, daynight_ratio); + } + else assert(0); } - else assert(0); - //makeFastFace(tile1, li, li, li, li, makeFastFace(tile1, li0, li1, li2, li3, sp+face_dir_f, -face_dir, scale, posRelative_f, dest); @@ -731,6 +737,7 @@ scene::SMesh* makeMapBlockMesh(MeshMakeData *data) */ bool new_style_water = g_settings.getBool("new_style_water"); bool new_style_leaves = g_settings.getBool("new_style_leaves"); + bool smooth_lighting = g_settings.getBool("smooth_lighting"); float node_water_level = 1.0; if(new_style_water) @@ -762,7 +769,8 @@ scene::SMesh* makeMapBlockMesh(MeshMakeData *data) fastfaces_new, data->m_temp_mods, data->m_vmanip, - blockpos_nodes); + blockpos_nodes, + smooth_lighting); } } /* @@ -779,7 +787,8 @@ scene::SMesh* makeMapBlockMesh(MeshMakeData *data) fastfaces_new, data->m_temp_mods, data->m_vmanip, - blockpos_nodes); + blockpos_nodes, + smooth_lighting); } } /* @@ -796,7 +805,8 @@ scene::SMesh* makeMapBlockMesh(MeshMakeData *data) fastfaces_new, data->m_temp_mods, data->m_vmanip, - blockpos_nodes); + blockpos_nodes, + smooth_lighting); } } } |