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.master
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;
|
||||||
|
|
Loading…
Reference in New Issue