Smooth biome colors + biome bug fixes

This commit is contained in:
Thinkofname 2016-04-04 15:05:24 +01:00
parent 17cfa26532
commit 3fb58a1b2c
3 changed files with 26 additions and 38 deletions

View File

@ -879,47 +879,35 @@ impl Model {
continue;
}
}
let (mut cr, mut cg, mut cb) = (255, 255, 255);
if face.tint_index == 0 {
match tint {
TintType::Default => {},
TintType::Color{r, g, b} => {
cr = r;
cg = g;
cb = b;
},
TintType::Grass => {
let (r, g, b) = calculate_biome(snapshot, x, z, &factory.grass_colors);
cr = r;
cg = g;
cb = b;
},
TintType::Foliage => {
let (r, g, b) = calculate_biome(snapshot, x, z, &factory.foliage_colors);
cr = r;
cg = g;
cb = b;
},
}
}
if face.facing == Direction::West || face.facing == Direction::East {
cr = ((cr as f64) * 0.8) as u8;
cg = ((cg as f64) * 0.8) as u8;
cb = ((cb as f64) * 0.8) as u8;
}
indices += face.indices;
for vert in &face.vertices {
let mut vert = vert.clone();
vert.r = cr;
vert.g = cg;
vert.b = cb;
vert.x += x as f32;
vert.y += y as f32;
vert.z += z as f32;
let (mut cr, mut cg, mut cb) = if face.tint_index == 0 {
match tint {
TintType::Default => (255, 255, 255),
TintType::Color{r, g, b} => (r, g, b),
TintType::Grass => calculate_biome(snapshot, vert.x as i32, vert.z as i32, &factory.grass_colors),
TintType::Foliage => calculate_biome(snapshot, vert.x as i32, vert.z as i32, &factory.foliage_colors),
}
} else {
(255, 255, 255)
};
if face.facing == Direction::West || face.facing == Direction::East {
cr = ((cr as f64) * 0.8) as u8;
cg = ((cg as f64) * 0.8) as u8;
cb = ((cb as f64) * 0.8) as u8;
}
vert.r = cr;
vert.g = cg;
vert.b = cb;
let (bl, sl) = calculate_light(
&snapshot,
x, y, z,
@ -945,8 +933,8 @@ fn calculate_biome(snapshot: &world::Snapshot, x: i32, z: i32, img: &image::Dyna
let mut r = 0;
let mut g = 0;
let mut b = 0;
for xx in -2 .. 3 {
for zz in -2 .. 3 {
for xx in -1 .. 2 {
for zz in -1 .. 2 {
let bi = snapshot.get_biome(x+xx, z+zz);
let ix = bi.color_index & 0xFF;
let iy = bi.color_index >> 8;

View File

@ -12,8 +12,8 @@ impl Biome {
Biome {
id: id,
temperature: t,
moisture: m,
color_index: (((1.0 - t) * 255.0) as usize) | ((((1.0 - t) * 255.0) as usize) << 8),
moisture: m*t,
color_index: (((1.0 - t) * 255.0) as usize) | ((((1.0 - (m*t)) * 255.0) as usize) << 8),
}
}

View File

@ -650,11 +650,11 @@ impl Snapshot {
}
pub fn get_biome(&self, x: i32, z: i32) -> biome::Biome {
biome::Biome::by_id(self.biomes[((x - self.x) | ((z - self.z) << 4)) as usize] as usize)
biome::Biome::by_id(self.biomes[((x - self.x) + ((z - self.z) * self.w)) as usize] as usize)
}
pub fn set_biome(&mut self, x: i32, z: i32, b: biome::Biome) {
self.biomes[((x - self.x) | ((z - self.z) << 4)) as usize] = b.id as u8;
self.biomes[((x - self.x) + ((z - self.z) * self.w)) as usize] = b.id as u8;
}
#[inline]