Darkness detection: Reduce chance of false positives darkening the skybox

The getBackgroundBrightness() function detects darkness in the view direction
to decide when to make the skybox dark. The volume checked was too narrow and
missed the left and right edges of the view, too easily causing a dark skybox.

Widen the checked volume to match a FOV of 72 degrees and a 16:9 aspect ratio
game window.
This commit is contained in:
Lars Hofhansl 2017-07-22 12:44:15 -07:00 committed by paramat
parent 640ba77276
commit d1a130488e

@ -596,11 +596,12 @@ int ClientMap::getBackgroundBrightness(float max_d, u32 daylight_factor,
}; };
if(z_directions[0].X < -99){ if(z_directions[0].X < -99){
for(u32 i=0; i<sizeof(z_directions)/sizeof(*z_directions); i++){ for(u32 i=0; i<sizeof(z_directions)/sizeof(*z_directions); i++){
// Assumes FOV of 72 and 16/9 aspect ratio
z_directions[i] = v3f( z_directions[i] = v3f(
0.01 * myrand_range(-100, 100), 0.02 * myrand_range(-100, 100),
1.0, 1.0,
0.01 * myrand_range(-100, 100) 0.01 * myrand_range(-100, 100)
); ).normalize();
z_offsets[i] = 0.01 * myrand_range(0,100); z_offsets[i] = 0.01 * myrand_range(0,100);
} }
} }
@ -613,7 +614,6 @@ int ClientMap::getBackgroundBrightness(float max_d, u32 daylight_factor,
std::vector<int> values; std::vector<int> values;
for(u32 i=0; i<sizeof(z_directions)/sizeof(*z_directions); i++){ for(u32 i=0; i<sizeof(z_directions)/sizeof(*z_directions); i++){
v3f z_dir = z_directions[i]; v3f z_dir = z_directions[i];
z_dir.normalize();
core::CMatrix4<f32> a; core::CMatrix4<f32> a;
a.buildRotateFromTo(v3f(0,1,0), z_dir); a.buildRotateFromTo(v3f(0,1,0), z_dir);
v3f dir = m_camera_direction; v3f dir = m_camera_direction;