void tracing for spot lights
This commit is contained in:
parent
dd568a75e3
commit
4c4b8288d5
5 changed files with 55 additions and 81 deletions
src/scene
|
@ -168,10 +168,11 @@ impl EmptyVolume {
|
|||
for x in 0..x_size+1 {
|
||||
for y in 0..y_size+1 {
|
||||
for z in 0..z_size+1 {
|
||||
neighbors.set_element(reference.clone(), reference.borrow().position.x + x, reference.borrow().position.y + y, reference.borrow().position.z + z);
|
||||
// fill only the edges
|
||||
if x == 0 || x == x_size || y == 0 || y == y_size || z==0 || z == z_size {
|
||||
/*if x == 0 || x == x_size || y == 0 || y == y_size || z==0 || z == z_size {
|
||||
neighbors.set_element(reference.clone(), reference.borrow().position.x + x, reference.borrow().position.y + y, reference.borrow().position.z + z)
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -724,7 +725,7 @@ impl EmptyVolume {
|
|||
mem_index += 1;
|
||||
v[mem_index] = self.position.y as u32;
|
||||
mem_index += 1;
|
||||
v[mem_index] = self.position.y as u32;
|
||||
v[mem_index] = self.position.z as u32;
|
||||
mem_index += 1;
|
||||
//max sizes
|
||||
v[mem_index] = self.size_x as u32;
|
||||
|
@ -740,7 +741,7 @@ impl EmptyVolume {
|
|||
mem_index += 1;
|
||||
}
|
||||
//color/roughness buffer sizes, 2 values each
|
||||
if self.color_top.len() > 0 {
|
||||
if self.color_top.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_y as u32;
|
||||
} else {
|
||||
|
@ -749,7 +750,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.color_bottom.len() > 0 {
|
||||
if self.color_bottom.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_y as u32;
|
||||
} else {
|
||||
|
@ -758,7 +759,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.color_left.len() > 0 {
|
||||
if self.color_left.len() > 1 {
|
||||
v[mem_index] = self.size_y as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -767,7 +768,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.color_right.len() > 0 {
|
||||
if self.color_right.len() > 1 {
|
||||
v[mem_index] = self.size_y as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -776,7 +777,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.color_front.len() > 0 {
|
||||
if self.color_front.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -785,7 +786,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.color_back.len() > 0 {
|
||||
if self.color_back.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -794,7 +795,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
//neighbor buffer sizes, 2 values each
|
||||
if self.neighbor_top.len() > 0 {
|
||||
if self.neighbor_top.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_y as u32;
|
||||
} else {
|
||||
|
@ -803,7 +804,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.neighbor_bottom.len() > 0 {
|
||||
if self.neighbor_bottom.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_y as u32;
|
||||
} else {
|
||||
|
@ -812,7 +813,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.neighbor_left.len() > 0 {
|
||||
if self.neighbor_left.len() > 1 {
|
||||
v[mem_index] = self.size_y as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -821,7 +822,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.neighbor_right.len() > 0 {
|
||||
if self.neighbor_right.len() > 1 {
|
||||
v[mem_index] = self.size_y as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -830,7 +831,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.neighbor_front.len() > 0 {
|
||||
if self.neighbor_front.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -839,7 +840,7 @@ impl EmptyVolume {
|
|||
}
|
||||
mem_index += 2;
|
||||
|
||||
if self.neighbor_back.len() > 0 {
|
||||
if self.neighbor_back.len() > 1 {
|
||||
v[mem_index] = self.size_x as u32;
|
||||
v[mem_index + 1] = self.size_z as u32;
|
||||
} else {
|
||||
|
@ -860,7 +861,7 @@ impl EmptyVolume {
|
|||
}
|
||||
}
|
||||
else {
|
||||
v[mem_index] = u32::from_ne_bytes([255, 255, 255, 255]);
|
||||
v[mem_index] = u32::from_ne_bytes([0, 0, 0, 0]);
|
||||
mem_index += 1;
|
||||
}
|
||||
|
||||
|
@ -874,7 +875,7 @@ impl EmptyVolume {
|
|||
}
|
||||
}
|
||||
else {
|
||||
v[mem_index] = u32::from_ne_bytes([255, 255, 255, 255]);
|
||||
v[mem_index] = u32::from_ne_bytes([0, 0, 0, 0]);
|
||||
mem_index += 1;
|
||||
}
|
||||
|
||||
|
@ -888,7 +889,7 @@ impl EmptyVolume {
|
|||
}
|
||||
}
|
||||
else {
|
||||
v[mem_index] = u32::from_ne_bytes([255, 255, 255, 255]);
|
||||
v[mem_index] = u32::from_ne_bytes([0, 0, 0, 0]);
|
||||
mem_index += 1;
|
||||
}
|
||||
|
||||
|
@ -902,7 +903,7 @@ impl EmptyVolume {
|
|||
}
|
||||
}
|
||||
else {
|
||||
v[mem_index] = u32::from_ne_bytes([255, 255, 255, 255]);
|
||||
v[mem_index] = u32::from_ne_bytes([0, 0, 0, 0]);
|
||||
mem_index += 1;
|
||||
}
|
||||
|
||||
|
@ -916,7 +917,7 @@ impl EmptyVolume {
|
|||
}
|
||||
}
|
||||
else {
|
||||
v[mem_index] = u32::from_ne_bytes([255, 255, 255, 255]);
|
||||
v[mem_index] = u32::from_ne_bytes([0, 0, 0, 0]);
|
||||
mem_index += 1;
|
||||
}
|
||||
|
||||
|
@ -930,14 +931,14 @@ impl EmptyVolume {
|
|||
}
|
||||
}
|
||||
else {
|
||||
v[mem_index] = u32::from_ne_bytes([255, 255, 255, 255]);
|
||||
v[mem_index] = u32::from_ne_bytes([0, 0, 0, 0]);
|
||||
mem_index += 1;
|
||||
}
|
||||
|
||||
// neighbors
|
||||
if self.neighbor_top.len() > 0 {
|
||||
for value in &self.neighbor_top {
|
||||
if let Some(reference) = value {
|
||||
for nvalue in &self.neighbor_top {
|
||||
if let Some(reference) = nvalue {
|
||||
v[mem_index] = reference.borrow().memory_start as u32;
|
||||
}
|
||||
else {
|
||||
|
@ -952,8 +953,8 @@ impl EmptyVolume {
|
|||
}
|
||||
|
||||
if self.neighbor_bottom.len() > 0 {
|
||||
for value in &self.neighbor_bottom {
|
||||
if let Some(reference) = value {
|
||||
for nvalue in &self.neighbor_bottom {
|
||||
if let Some(reference) = nvalue {
|
||||
v[mem_index] = reference.borrow().memory_start as u32;
|
||||
}
|
||||
else {
|
||||
|
@ -968,8 +969,8 @@ impl EmptyVolume {
|
|||
}
|
||||
|
||||
if self.neighbor_left.len() > 0 {
|
||||
for value in &self.neighbor_left {
|
||||
if let Some(reference) = value {
|
||||
for nvalue in &self.neighbor_left {
|
||||
if let Some(reference) = nvalue {
|
||||
v[mem_index] = reference.borrow().memory_start as u32;
|
||||
}
|
||||
else {
|
||||
|
@ -984,8 +985,8 @@ impl EmptyVolume {
|
|||
}
|
||||
|
||||
if self.neighbor_right.len() > 0 {
|
||||
for value in &self.neighbor_right {
|
||||
if let Some(reference) = value {
|
||||
for nvalue in &self.neighbor_right {
|
||||
if let Some(reference) = nvalue {
|
||||
v[mem_index] = reference.borrow().memory_start as u32;
|
||||
}
|
||||
else {
|
||||
|
@ -1000,8 +1001,8 @@ impl EmptyVolume {
|
|||
}
|
||||
|
||||
if self.neighbor_front.len() > 0 {
|
||||
for value in &self.neighbor_front {
|
||||
if let Some(reference) = value {
|
||||
for nvalue in &self.neighbor_front {
|
||||
if let Some(reference) = nvalue {
|
||||
v[mem_index] = reference.borrow().memory_start as u32;
|
||||
}
|
||||
else {
|
||||
|
@ -1016,8 +1017,8 @@ impl EmptyVolume {
|
|||
}
|
||||
|
||||
if self.neighbor_back.len() > 0 {
|
||||
for value in &self.neighbor_back {
|
||||
if let Some(reference) = value {
|
||||
for nvalue in &self.neighbor_back {
|
||||
if let Some(reference) = nvalue {
|
||||
v[mem_index] = reference.borrow().memory_start as u32;
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue