light: expand test case for light channels

This commit is contained in:
Eric Wasylishen 2022-12-13 23:42:26 -07:00
parent 00754e588e
commit ccb72a3bf5
2 changed files with 48 additions and 6 deletions

View File

@ -79,11 +79,12 @@
}
// entity 2
{
"classname" "light"
"classname" "light_mine2"
"origin" "680 1176 1000"
"light" "300"
"_light_channel_mask" "2"
"_shadow_channel_mask" "2"
"wait" ".5"
}
// entity 3
{
@ -91,11 +92,29 @@
"_object_channel_mask" "2"
// brush 0
{
( 656 1280 944 ) ( 656 1281 944 ) ( 656 1280 945 ) e1u1/twall2_1 -32 0 0 1 1
( 656 1280 944 ) ( 656 1280 945 ) ( 657 1280 944 ) e1u1/twall2_1 0 0 0 1 1
( 656 1280 976 ) ( 657 1280 976 ) ( 656 1281 976 ) e1u1/twall2_1 0 32 0 1 1
( 656 1280 1024 ) ( 656 1281 1024 ) ( 657 1280 1024 ) e1u1/twall2_1 0 32 0 1 1
( 704 1296 960 ) ( 705 1296 960 ) ( 704 1296 961 ) e1u1/twall2_1 0 0 0 1 1
( 704 1312 960 ) ( 704 1312 961 ) ( 704 1313 960 ) e1u1/twall2_1 -32 0 0 1 1
}
// brush 1
{
( 656 1248 944 ) ( 656 1249 944 ) ( 656 1248 945 ) e1u1/twall2_1 0 0 0 1 1
( 656 1248 944 ) ( 656 1248 945 ) ( 657 1248 944 ) e1u1/twall2_1 0 0 0 1 1
( 656 1248 944 ) ( 657 1248 944 ) ( 656 1249 944 ) e1u1/twall2_1 0 0 0 1 1
( 656 1248 960 ) ( 657 1248 960 ) ( 656 1249 960 ) e1u1/twall2_1 0 0 0 1 1
( 704 1280 1040 ) ( 704 1281 1040 ) ( 705 1280 1040 ) e1u1/twall2_1 0 0 0 1 1
( 704 1280 960 ) ( 705 1280 960 ) ( 704 1280 961 ) e1u1/twall2_1 0 0 0 1 1
( 704 1264 960 ) ( 705 1264 960 ) ( 704 1264 961 ) e1u1/twall2_1 0 0 0 1 1
( 704 1280 960 ) ( 704 1280 961 ) ( 704 1281 960 ) e1u1/twall2_1 0 0 0 1 1
}
// brush 2
{
( 656 1280 944 ) ( 656 1281 944 ) ( 656 1280 945 ) e1u1/twall2_1 -32 0 0 1 1
( 656 1280 944 ) ( 656 1280 945 ) ( 657 1280 944 ) e1u1/twall2_1 0 0 0 1 1
( 656 1280 1072 ) ( 657 1280 1072 ) ( 656 1281 1072 ) e1u1/twall2_1 0 32 0 1 1
( 704 1312 1104 ) ( 704 1313 1104 ) ( 705 1312 1104 ) e1u1/twall2_1 0 32 0 1 1
( 704 1296 960 ) ( 705 1296 960 ) ( 704 1296 961 ) e1u1/twall2_1 0 0 0 1 1
( 704 1312 960 ) ( 704 1312 961 ) ( 704 1313 960 ) e1u1/twall2_1 -32 0 0 1 1
}
}

View File

@ -294,11 +294,12 @@ TEST_CASE("negative lights work") {
}
}
TEST_CASE("_light_group") {
TEST_CASE("light channel mask (_object_channel_mask, _light_channel_mask, _shadow_channel_mask)") {
auto [bsp, bspx] = LoadTestmap("q2_light_group.map", {});
REQUIRE(2 == bsp.dmodels.size());
{
INFO("world doesn't receive light from the light ent with '_light_group' 'pillar'");
INFO("world doesn't receive light from the light ent with _light_channel_mask 2");
auto *face_under_light = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], {680, 1224, 944});
REQUIRE(face_under_light);
@ -309,7 +310,7 @@ TEST_CASE("_light_group") {
}
{
INFO("pillar with matching _light_group is receiving light");
INFO("pillar with _object_channel_mask 2 is receiving light");
auto *face_on_pillar = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[1], {680, 1248, 1000});
REQUIRE(face_on_pillar);
@ -318,4 +319,26 @@ TEST_CASE("_light_group") {
CHECK(sample[0] > 100);
});
}
{
INFO("_object_channel_mask 2 implicitly makes bmodels cast shadow in channel 2");
auto *occluded_face = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[1], {680, 1280, 1000});
REQUIRE(occluded_face);
CheckFaceLuxels(bsp, *occluded_face, [](qvec3b sample) {
CHECK(sample[0] == 0);
});
}
{
INFO("ensure AABB culling isn't breaking light channels");
auto *unoccluded_face = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[1], {680, 1280, 1088});
REQUIRE(unoccluded_face);
CheckFaceLuxels(bsp, *unoccluded_face, [](qvec3b sample) {
CHECK(sample[0] > 100);
});
}
}