implement shadows, tweak world objects for better visibility
This commit is contained in:
parent
f0df596ea1
commit
4c26f2ef4f
|
@ -17,7 +17,7 @@ use bevy::input::mouse::{MouseMotion, MouseWheel};
|
||||||
use bevy::window::PrimaryWindow;
|
use bevy::window::PrimaryWindow;
|
||||||
use bevy::core_pipeline::bloom::{BloomCompositeMode, BloomSettings};
|
use bevy::core_pipeline::bloom::{BloomCompositeMode, BloomSettings};
|
||||||
use bevy::core_pipeline::tonemapping::Tonemapping;
|
use bevy::core_pipeline::tonemapping::Tonemapping;
|
||||||
use bevy::pbr::CascadeShadowConfigBuilder;
|
use bevy::pbr::{CascadeShadowConfigBuilder, DirectionalLightShadowMap};
|
||||||
use bevy::transform::TransformSystem;
|
use bevy::transform::TransformSystem;
|
||||||
use bevy::math::{DVec3, DQuat};
|
use bevy::math::{DVec3, DQuat};
|
||||||
use bevy_xpbd_3d::prelude::*;
|
use bevy_xpbd_3d::prelude::*;
|
||||||
|
@ -43,6 +43,7 @@ impl Plugin for CameraPlugin {
|
||||||
.after(PhysicsSet::Sync)
|
.after(PhysicsSet::Sync)
|
||||||
.before(TransformSystem::TransformPropagate));
|
.before(TransformSystem::TransformPropagate));
|
||||||
app.insert_resource(MapCam::default());
|
app.insert_resource(MapCam::default());
|
||||||
|
//app.insert_resource(DirectionalLightShadowMap { size: 4096 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,6 +81,7 @@ impl Default for MapCam {
|
||||||
|
|
||||||
pub fn setup_camera(
|
pub fn setup_camera(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
|
settings: Res<var::Settings>,
|
||||||
) {
|
) {
|
||||||
// Add player
|
// Add player
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
|
@ -103,16 +105,16 @@ pub fn setup_camera(
|
||||||
commands.spawn(DirectionalLightBundle {
|
commands.spawn(DirectionalLightBundle {
|
||||||
directional_light: DirectionalLight {
|
directional_light: DirectionalLight {
|
||||||
illuminance: 3000.0,
|
illuminance: 3000.0,
|
||||||
shadows_enabled: false,
|
shadows_enabled: settings.shadows_sun,
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
transform: Transform::from_rotation(Quat::from_rotation_y(PI/2.0)),
|
transform: Transform::from_rotation(Quat::from_rotation_y(PI/2.0)),
|
||||||
cascade_shadow_config: CascadeShadowConfigBuilder {
|
cascade_shadow_config: CascadeShadowConfigBuilder {
|
||||||
first_cascade_far_bound: 7.0,
|
num_cascades: 4,
|
||||||
maximum_distance: 25.0,
|
minimum_distance: 0.001,
|
||||||
|
maximum_distance: 250000.0,
|
||||||
..default()
|
..default()
|
||||||
}
|
}.into(),
|
||||||
.into(),
|
|
||||||
..default()
|
..default()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,8 @@ extern crate regex;
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use bevy_xpbd_3d::prelude::*;
|
use bevy_xpbd_3d::prelude::*;
|
||||||
use bevy::math::DVec3;
|
use bevy::math::DVec3;
|
||||||
use crate::{actor, camera, chat, hud, nature, shading, skeleton, world};
|
use bevy::pbr::{NotShadowCaster, NotShadowReceiver};
|
||||||
|
use crate::{actor, camera, chat, hud, nature, shading, skeleton, var, world};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
use std::f64::consts::PI as PI64;
|
use std::f64::consts::PI as PI64;
|
||||||
|
@ -484,6 +485,7 @@ fn spawn_entities(
|
||||||
mut materials: ResMut<Assets<StandardMaterial>>,
|
mut materials: ResMut<Assets<StandardMaterial>>,
|
||||||
mut materials_jupiter: ResMut<Assets<shading::JupitersRing>>,
|
mut materials_jupiter: ResMut<Assets<shading::JupitersRing>>,
|
||||||
mut id2pos: ResMut<actor::Id2Pos>,
|
mut id2pos: ResMut<actor::Id2Pos>,
|
||||||
|
settings: Res<var::Settings>,
|
||||||
) {
|
) {
|
||||||
for state_wrapper in er_spawn.read() {
|
for state_wrapper in er_spawn.read() {
|
||||||
let state = &state_wrapper.0;
|
let state = &state_wrapper.0;
|
||||||
|
@ -591,6 +593,10 @@ fn spawn_entities(
|
||||||
unlit: true,
|
unlit: true,
|
||||||
..default()
|
..default()
|
||||||
}));
|
}));
|
||||||
|
actor.insert((
|
||||||
|
NotShadowCaster,
|
||||||
|
NotShadowReceiver,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
if state.is_targeted_on_startup {
|
if state.is_targeted_on_startup {
|
||||||
actor.insert(hud::IsTargeted);
|
actor.insert(hud::IsTargeted);
|
||||||
|
@ -634,6 +640,7 @@ fn spawn_entities(
|
||||||
intensity: state.light_brightness,
|
intensity: state.light_brightness,
|
||||||
color,
|
color,
|
||||||
range: 2000.0,
|
range: 2000.0,
|
||||||
|
shadows_enabled: settings.shadows_pointlights,
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
bevy::pbr::CubemapVisibleEntities::default(),
|
bevy::pbr::CubemapVisibleEntities::default(),
|
||||||
|
@ -688,6 +695,8 @@ fn spawn_entities(
|
||||||
visibility: Visibility::Hidden,
|
visibility: Visibility::Hidden,
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
|
NotShadowCaster,
|
||||||
|
NotShadowReceiver,
|
||||||
));
|
));
|
||||||
skeleton::load(ar_asset_name, &mut entitycmd, &*asset_server);
|
skeleton::load(ar_asset_name, &mut entitycmd, &*asset_server);
|
||||||
}
|
}
|
||||||
|
@ -701,6 +710,8 @@ fn spawn_entities(
|
||||||
visibility: Visibility::Hidden,
|
visibility: Visibility::Hidden,
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
|
NotShadowCaster,
|
||||||
|
NotShadowReceiver,
|
||||||
));
|
));
|
||||||
skeleton::load("point_of_interest", &mut entitycmd, &*asset_server);
|
skeleton::load("point_of_interest", &mut entitycmd, &*asset_server);
|
||||||
}
|
}
|
||||||
|
@ -721,6 +732,8 @@ fn spawn_entities(
|
||||||
Position::new(relative_pos),
|
Position::new(relative_pos),
|
||||||
Rotation::from(Quat::IDENTITY),
|
Rotation::from(Quat::IDENTITY),
|
||||||
//Rotation::from(Quat::from_rotation_x(-0.3f32.to_radians())),
|
//Rotation::from(Quat::from_rotation_x(-0.3f32.to_radians())),
|
||||||
|
NotShadowCaster,
|
||||||
|
NotShadowReceiver,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,7 +246,7 @@ actor 0 0 0 moonlet
|
||||||
scale 83.5e3
|
scale 83.5e3
|
||||||
angularmomentum 0 0.025 0
|
angularmomentum 0 0.025 0
|
||||||
|
|
||||||
actor 3000 0 0 moonlet
|
actor 3000 0 -300 moonlet
|
||||||
name Moonlet
|
name Moonlet
|
||||||
collider mesh
|
collider mesh
|
||||||
relativeto player
|
relativeto player
|
||||||
|
@ -335,7 +335,7 @@ actor -3300 10 0 pizzeria
|
||||||
density 500
|
density 500
|
||||||
angularmomentum 0 0 0.2
|
angularmomentum 0 0 0.2
|
||||||
pointofinterest yes
|
pointofinterest yes
|
||||||
actor -30 100 -23 pizzasign
|
actor 60 60 -23 pizzasign
|
||||||
name "Pizzeria Sign"
|
name "Pizzeria Sign"
|
||||||
relativeto pizzeria
|
relativeto pizzeria
|
||||||
scale 20
|
scale 20
|
||||||
|
@ -382,7 +382,7 @@ actor -3300 10 0 pizzeria
|
||||||
angularmomentum 0 0 0
|
angularmomentum 0 0 0
|
||||||
pronoun he
|
pronoun he
|
||||||
|
|
||||||
actor 60 -15 -40 suitv2
|
actor 30 -12 -20 suitv2
|
||||||
relativeto player
|
relativeto player
|
||||||
name Icarus
|
name Icarus
|
||||||
id Icarus
|
id Icarus
|
||||||
|
@ -398,6 +398,26 @@ actor 60 -15 -40 suitv2
|
||||||
wants maxrotation 0.5
|
wants maxrotation 0.5
|
||||||
wants maxvelocity 0
|
wants maxvelocity 0
|
||||||
pronoun it
|
pronoun it
|
||||||
|
actor 12 -35 -27 lightorb
|
||||||
|
name "Light Orb 1"
|
||||||
|
relativeto Icarus
|
||||||
|
scale 0.25
|
||||||
|
light FF8F4A 5000000
|
||||||
|
actor -2 -11 -9 lightorb
|
||||||
|
name "Light Orb 2"
|
||||||
|
relativeto Icarus
|
||||||
|
scale 0.25
|
||||||
|
light FF8F4A 5000000
|
||||||
|
actor 26 -39 4 lightorb
|
||||||
|
name "Light Orb 3"
|
||||||
|
relativeto Icarus
|
||||||
|
scale 0.25
|
||||||
|
light FF8F4A 5000000
|
||||||
|
actor 1.8 -15.5 16 lightorb
|
||||||
|
name "Light Orb 4"
|
||||||
|
relativeto Icarus
|
||||||
|
scale 0.25
|
||||||
|
light FF8F4A 5000000
|
||||||
|
|
||||||
actor -300 0 40 suitv2
|
actor -300 0 40 suitv2
|
||||||
relativeto player
|
relativeto player
|
||||||
|
|
|
@ -58,6 +58,8 @@ pub struct Settings {
|
||||||
pub is_zooming: bool,
|
pub is_zooming: bool,
|
||||||
pub third_person: bool,
|
pub third_person: bool,
|
||||||
pub rotation_stabilizer_active: bool,
|
pub rotation_stabilizer_active: bool,
|
||||||
|
pub shadows_sun: bool,
|
||||||
|
pub shadows_pointlights: bool,
|
||||||
pub key_selectobject: MouseButton,
|
pub key_selectobject: MouseButton,
|
||||||
pub key_zoom: MouseButton,
|
pub key_zoom: MouseButton,
|
||||||
pub key_map: KeyCode,
|
pub key_map: KeyCode,
|
||||||
|
@ -168,6 +170,8 @@ impl Default for Settings {
|
||||||
is_zooming: false,
|
is_zooming: false,
|
||||||
third_person: false,
|
third_person: false,
|
||||||
rotation_stabilizer_active: true,
|
rotation_stabilizer_active: true,
|
||||||
|
shadows_sun: true,
|
||||||
|
shadows_pointlights: false,
|
||||||
key_selectobject: MouseButton::Left,
|
key_selectobject: MouseButton::Left,
|
||||||
key_zoom: MouseButton::Right,
|
key_zoom: MouseButton::Right,
|
||||||
key_map: KeyCode::KeyM,
|
key_map: KeyCode::KeyM,
|
||||||
|
|
Loading…
Reference in a new issue