Simplify block gen code path when all corners are empty
This commit is contained in:
parent
2f99b0ea4e
commit
a29b4979ef
|
@ -39,25 +39,29 @@ impl Chunk {
|
|||
}
|
||||
}
|
||||
|
||||
let mut vals = [0.0f32; 512];
|
||||
if block_sign != -8.0 {
|
||||
// If all the corners are negative, then all the interpolated values
|
||||
// will be negative too. In that case we can just fill with empty.
|
||||
if block_sign == -8.0 {
|
||||
block.resize(512, Voxel::Empty);
|
||||
} else {
|
||||
let mut vals = [0.0f32; 512];
|
||||
math::tri_lerp_block(&noise_vals, &[8, 8, 8], &mut vals);
|
||||
}
|
||||
|
||||
let mut idx = 0;
|
||||
for z in 0..8 {
|
||||
for y in 0..8 {
|
||||
for x in 0..8 {
|
||||
let val = vals[idx];
|
||||
idx += 1;
|
||||
let mut idx = 0;
|
||||
for z in 0..8 {
|
||||
for y in 0..8 {
|
||||
for x in 0..8 {
|
||||
let val = vals[idx];
|
||||
idx += 1;
|
||||
|
||||
if val > 0.0 {
|
||||
let r = ((x + 1) * 32 - 1) as u8;
|
||||
let g = ((y + 1) * 32 - 1) as u8;
|
||||
let b = ((z + 1) * 32 - 1) as u8;
|
||||
block.push(Voxel::Color(r, g, b));
|
||||
} else {
|
||||
block.push(Voxel::Empty);
|
||||
if val > 0.0 {
|
||||
let r = ((x + 1) * 32 - 1) as u8;
|
||||
let g = ((y + 1) * 32 - 1) as u8;
|
||||
let b = ((z + 1) * 32 - 1) as u8;
|
||||
block.push(Voxel::Color(r, g, b));
|
||||
} else {
|
||||
block.push(Voxel::Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue