+1
-1
@@ -5,7 +5,7 @@ layout(push_constant) uniform PushConstantData {
|
|||||||
mat4 world;
|
mat4 world;
|
||||||
vec3 dimensions;
|
vec3 dimensions;
|
||||||
vec3 lowest_corner;
|
vec3 lowest_corner;
|
||||||
uint enable[16*16*2];
|
uint enable[16];
|
||||||
} pc;
|
} pc;
|
||||||
|
|
||||||
layout(set = 0, binding = 0) uniform Lights {
|
layout(set = 0, binding = 0) uniform Lights {
|
||||||
|
|||||||
+24
-58
@@ -319,78 +319,45 @@ fn interval_check(csg: &CSG, push_constants: &mut PushConstantData) {
|
|||||||
push_constants.dimensions = (highest_corner - lowest_corner).to_array().into();
|
push_constants.dimensions = (highest_corner - lowest_corner).to_array().into();
|
||||||
push_constants.lowest_corner = lowest_corner.into();
|
push_constants.lowest_corner = lowest_corner.into();
|
||||||
|
|
||||||
push_constants.enable = [0; 16 * 16 * 2];
|
push_constants.enable = [0; 16];
|
||||||
|
|
||||||
for x in 0..16 {
|
for x in 0..8 {
|
||||||
for y in 0..16 {
|
for y in 0..8 {
|
||||||
for z in 0..2 {
|
|
||||||
let interval_input_z: Interval = Interval::new_unchecked(
|
let interval_input_z: Interval = Interval::new_unchecked(
|
||||||
interpreter::Value::from_array([
|
interpreter::Value::from_array([
|
||||||
(((z as f32) / 2.0)
|
(0.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ (0.0 / 16.0)) * push_constants.dimensions[2]
|
(1.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ push_constants.lowest_corner[2],
|
(2.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
(((z as f32) / 2.0)
|
(3.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ (1.0 / 16.0)) * push_constants.dimensions[2]
|
(4.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ push_constants.lowest_corner[2],
|
(5.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
(((z as f32) / 2.0)
|
(6.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ (2.0 / 16.0)) * push_constants.dimensions[2]
|
(7.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (3.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (4.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (5.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (6.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (7.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
]),
|
]),
|
||||||
interpreter::Value::from_array([
|
interpreter::Value::from_array([
|
||||||
((((z as f32) / 2.0)
|
(1.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ (1.0 / 16.0)) * push_constants.dimensions[2]
|
(2.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ push_constants.lowest_corner[2],
|
(3.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
(((z as f32) / 2.0)
|
(4.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ (2.0 / 16.0)) * push_constants.dimensions[2]
|
(5.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ push_constants.lowest_corner[2],
|
(6.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
(((z as f32) / 2.0)
|
(7.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ (3.0 / 16.0)) * push_constants.dimensions[2]
|
(8.0 / 8.0) * push_constants.dimensions[2] + push_constants.lowest_corner[2],
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (4.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (5.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (6.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (7.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
(((z as f32) / 2.0)
|
|
||||||
+ (8.0 / 16.0)) * push_constants.dimensions[2]
|
|
||||||
+ push_constants.lowest_corner[2],
|
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut interpreter = IntervalInterpreter::new(csg);
|
let mut interpreter = IntervalInterpreter::new(csg);
|
||||||
let output = interpreter.scene(
|
let output = interpreter.scene(
|
||||||
Interval::const_splat2(
|
Interval::const_splat2(
|
||||||
(x as f32 / 16.0) * push_constants.dimensions[0]
|
(x as f32 / 8.0) * push_constants.dimensions[0]
|
||||||
+ push_constants.lowest_corner[0],
|
+ push_constants.lowest_corner[0],
|
||||||
((x + 1) as f32 / 16.0) * push_constants.dimensions[0]
|
((x + 1) as f32 / 8.0) * push_constants.dimensions[0]
|
||||||
+ push_constants.lowest_corner[0],
|
+ push_constants.lowest_corner[0],
|
||||||
),
|
),
|
||||||
Interval::const_splat2(
|
Interval::const_splat2(
|
||||||
(y as f32 / 16.0) * push_constants.dimensions[1]
|
(y as f32 / 8.0) * push_constants.dimensions[1]
|
||||||
+ push_constants.lowest_corner[1],
|
+ push_constants.lowest_corner[1],
|
||||||
((y + 1) as f32 / 16.0) * push_constants.dimensions[1]
|
((y + 1) as f32 / 8.0) * push_constants.dimensions[1]
|
||||||
+ push_constants.lowest_corner[1],
|
+ push_constants.lowest_corner[1],
|
||||||
),
|
),
|
||||||
interval_input_z,
|
interval_input_z,
|
||||||
@@ -399,8 +366,7 @@ fn interval_check(csg: &CSG, push_constants: &mut PushConstantData) {
|
|||||||
let output = ((output.lower().simd_le(VALUE_0) & output.upper().simd_ge(VALUE_0))
|
let output = ((output.lower().simd_le(VALUE_0) & output.upper().simd_ge(VALUE_0))
|
||||||
.to_bitmask() as u32)
|
.to_bitmask() as u32)
|
||||||
<< ((y & 0b11) * 8);
|
<< ((y & 0b11) * 8);
|
||||||
push_constants.enable[(x << 2) | (y >> 2)] |= output;
|
push_constants.enable[(x << 1) | (y >> 2)] |= output;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user