Some minor changes.

This commit is contained in:
Joshua Yanovski 2020-07-04 18:04:34 +02:00
parent 4e02024670
commit ccc6a06a8d
3 changed files with 25 additions and 27 deletions

View File

@ -281,7 +281,7 @@ void main() {
// diffuse_light += point_light; // diffuse_light += point_light;
// reflected_light += point_light; // reflected_light += point_light;
// vec3 surf_color = srgb_to_linear(vec3(0.2, 0.5, 1.0)) * light * diffuse_light * ambient_light; // vec3 surf_color = srgb_to_linear(vec3(0.2, 0.5, 1.0)) * light * diffuse_light * ambient_light;
vec3 surf_color = illuminate(max_light, view_dir, emitted_light/* * log(1.0 - MU_WATER)*/, /*cam_attenuation * *//*water_color * */reflected_light/* * log(1.0 - MU_WATER)*/); vec3 surf_color = illuminate(max_light, view_dir, emitted_light/* * log(1.0 - MU_WATER)*/, /*cam_attenuation * *//*water_color * */reflect_color * reflected_light/* * log(1.0 - MU_WATER)*/);
// passthrough = pow(passthrough, 1.0 / (1.0 + water_depth_to_camera)); // passthrough = pow(passthrough, 1.0 / (1.0 + water_depth_to_camera));
/* surf_color = cam_attenuation.g < 0.5 ? /* surf_color = cam_attenuation.g < 0.5 ?

View File

@ -45,6 +45,7 @@ vec2 cloud_at(vec3 pos) {
vec4 get_cloud_color(vec3 dir, vec3 origin, float time_of_day, float max_dist, float quality) { vec4 get_cloud_color(vec3 dir, vec3 origin, float time_of_day, float max_dist, float quality) {
const int ITERS = 12; const int ITERS = 12;
const float INCR = 1.0 / ITERS; const float INCR = 1.0 / ITERS;
origin = origin + focus_off.xyz;
vec3 max_heights = get_cloud_heights(); vec3 max_heights = get_cloud_heights();
float mind = (max_heights.y - origin.z) / dir.z; float mind = (max_heights.y - origin.z) / dir.z;

View File

@ -440,32 +440,6 @@ impl FigureMgr {
.map(|i| (Pos(i.pos), *i.ori)) .map(|i| (Pos(i.pos), *i.ori))
.unwrap_or((*pos, Vec3::unit_y())); .unwrap_or((*pos, Vec3::unit_y()));
// Don't display figures outside the frustum spectrum (this is important to do
// for any figure that potentially casts a shadow, since we use this
// to estimate bounds for shadow maps). The reason we do this
// before the udpate cull is to make sure infrequently updated
// figures are not clipped when they're visible; the vd_frac part is
// delayed until after that test to limit program pauses from too many
// figures being removed at once (rather than their being removed based on their
// update rates).
let radius = scale.unwrap_or(&Scale(1.0)).0 * 2.0;
let (in_frustum, lpindex) = if let Some(mut meta) = self.states.get_mut(body, &entity) {
let (in_frustum, lpindex) = BoundingSphere::new(pos.0.into_array(), radius)
.coherent_test_against_frustum(frustum, meta.lpindex);
meta.visible = in_frustum;
meta.lpindex = lpindex;
(in_frustum, lpindex)
} else {
(true, 0)
};
if in_frustum {
// Update visible bounds.
visible_aabb.expand_to_contain(Aabb {
min: pos.0 - radius,
max: pos.0 + radius,
});
}
// Maintaining figure data and sending new figure data to the GPU turns out to // Maintaining figure data and sending new figure data to the GPU turns out to
// be a very expensive operation. We want to avoid doing it as much // be a very expensive operation. We want to avoid doing it as much
// as possible, so we make the assumption that players don't care so // as possible, so we make the assumption that players don't care so
@ -502,6 +476,29 @@ impl FigureMgr {
continue; continue;
} }
// Don't display figures outside the frustum spectrum (this is important to do
// for any figure that potentially casts a shadow, since we use this
// to estimate bounds for shadow maps). Currently, we don't do this before the update
// cull, so it's possible that faraway figures will not shadow correctly until their
// next update. For now, we treat this as an acceptable tradeoff.
let radius = scale.unwrap_or(&Scale(1.0)).0 * 2.0;
let (in_frustum, lpindex) = if let Some(mut meta) = self.states.get_mut(body, &entity) {
let (in_frustum, lpindex) = BoundingSphere::new(pos.0.into_array(), radius)
.coherent_test_against_frustum(frustum, meta.lpindex);
meta.visible = in_frustum;
meta.lpindex = lpindex;
(in_frustum, lpindex)
} else {
(true, 0)
};
if in_frustum {
// Update visible bounds.
visible_aabb.expand_to_contain(Aabb {
min: pos.0 - radius,
max: pos.0 + radius,
});
}
// Change in health as color! // Change in health as color!
let col = stats let col = stats
.map(|s| { .map(|s| {