mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Scatter testing (not complete)
This commit is contained in:
parent
35deaae540
commit
09a5e49c25
@ -7,7 +7,7 @@
|
||||
rocks: true,
|
||||
shrubs: true,
|
||||
trees: true,
|
||||
scatter: false,
|
||||
scatter: true,
|
||||
paths: true,
|
||||
spots: true,
|
||||
snow: true,
|
||||
|
@ -78,7 +78,7 @@ pub struct ColumnGen<'a> {
|
||||
pub sim_chunk: &'a SimChunk,
|
||||
pub(crate) catmull_rom_gen: SplineGen2D<&'a SimChunk>,
|
||||
pub(crate) neighbor_river_data: Vec<(Vec2<i32>, &'a SimChunk, &'a RiverData)>,
|
||||
pub(crate) homogeneous_water_level: Option<f32>,
|
||||
pub(crate) homogeneous_water_level: Option<Option<f32>>,
|
||||
// pub(crate) spawn_rules: SpawnRules,
|
||||
}
|
||||
|
||||
@ -545,13 +545,15 @@ impl<'a> ColumnGen<'a> {
|
||||
let river_kind = sim_chunk.river.river_kind;
|
||||
let homogeneous_water_level = neighbor_river_data
|
||||
.iter()
|
||||
.filter(|(pos, _, _)| (pos - chunk_pos).map(i32::abs).reduce_max() <= 1)
|
||||
.all(|(pos, chunk, river)| river.river_kind == river_kind ||
|
||||
chunk.water_alt == sim_chunk.water_alt);
|
||||
let base_sea_level = CONFIG.sea_level - 1.0 + 0.01;
|
||||
let homogeneous_water_level = if homogeneous_water_level {
|
||||
match river_kind {
|
||||
None | Some(RiverKind::Ocean) => Some(base_sea_level),
|
||||
Some(RiverKind::Lake { .. }) => Some(sim_chunk.water_alt),
|
||||
None => Some(None),
|
||||
Some(RiverKind::Ocean) => Some(Some(base_sea_level)),
|
||||
Some(RiverKind::Lake { .. }) => Some(Some(sim_chunk.water_alt)),
|
||||
_ => None,
|
||||
}
|
||||
} else {
|
||||
@ -751,10 +753,10 @@ impl<'a, 'b> Sampler<'a, 'b> for ColumnGen1D<'a, 'b> {
|
||||
let base_sea_level = CONFIG.sea_level - 1.0 + 0.01;
|
||||
|
||||
let riverless_alt = alt;
|
||||
let (alt, water_level, water_dist) = if let Some(water_level) = homogeneous_water_level {
|
||||
(alt, water_level, None::<f32>)
|
||||
let (alt, water_level, water_dist, water_dist_) = if let Some(water_level) = homogeneous_water_level {
|
||||
(alt, water_level.unwrap_or(base_sea_level), water_level.and(Some(0.0)), None::<f32>)
|
||||
} else {
|
||||
(alt, base_sea_level, None::<f32>)
|
||||
(alt, base_sea_level, None::<f32>, None::<f32>)
|
||||
/* let lake_width = (TerrainChunkSize::RECT_SIZE.x as f64 * 2.0f64.sqrt()) + 6.0;
|
||||
let neighbor_river_data = neighbor_river_data
|
||||
.iter()
|
||||
@ -1462,7 +1464,7 @@ impl<'a, 'b> Sampler<'a, 'b> for ColumnGen1D<'a, 'b> {
|
||||
let cliff_offset = cliff * cliff_height;
|
||||
let riverless_alt_delta = riverless_alt_delta + (cliff - 0.5) * cliff_height;
|
||||
|
||||
let warp_factor = water_dist.map_or(1.0, |d| ((d - 0.0) / 64.0).clamped(0.0, 1.0));
|
||||
let warp_factor = water_dist_.map_or(1.0, |d| ((d - 0.0) / 64.0).clamped(0.0, 1.0));
|
||||
|
||||
// NOTE: To disable warp, uncomment this line.
|
||||
// let warp_factor = 0.0;
|
||||
|
@ -1,6 +1,7 @@
|
||||
use crate::{
|
||||
layer::wildlife::{self, DensityFn, SpawnEntry},
|
||||
site::{economy::TradeInformation, Site},
|
||||
util::FastNoise2d,
|
||||
Colors, Features,
|
||||
};
|
||||
use common::{
|
||||
@ -135,14 +136,14 @@ impl IndexOwned {
|
||||
|
||||
pub struct Noise {
|
||||
pub cave_nz: SuperSimplex,
|
||||
pub scatter_nz: SuperSimplex,
|
||||
pub scatter_nz: /*SuperSimplex*/FastNoise2d,
|
||||
}
|
||||
|
||||
impl Noise {
|
||||
fn new(seed: u32) -> Self {
|
||||
Self {
|
||||
cave_nz: SuperSimplex::new().set_seed(seed + 0),
|
||||
scatter_nz: SuperSimplex::new().set_seed(seed + 1),
|
||||
scatter_nz: /*SuperSimplex::new().set_seed(seed + 1)*/FastNoise2d::new(seed + 1),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -289,7 +289,7 @@ pub fn apply_trees_to(
|
||||
|
||||
/* criterion::black_box(tree); */
|
||||
/*for tree in trees {*/
|
||||
/*
|
||||
/*
|
||||
arena: &'b bumpalo::Bump,
|
||||
canvas_info: CanvasInfo<'c>,
|
||||
render_area: Aabr<i32>,
|
||||
|
@ -49,8 +49,12 @@ pub struct RandomPerm {
|
||||
impl RandomPerm {
|
||||
pub const fn new(seed: u32) -> Self { Self { seed } }
|
||||
|
||||
pub fn get_f32(&self, perm: u32) -> f32 {
|
||||
(self.get(perm) % (1 << 16)) as f32 / ((1 << 16) as f32)
|
||||
}
|
||||
|
||||
pub fn chance(&self, perm: u32, chance: f32) -> bool {
|
||||
(self.get(perm) % (1 << 16)) as f32 / ((1 << 16) as f32) < chance
|
||||
self.get_f32(perm) < chance
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user