tests: add q2 light cone test
This commit is contained in:
parent
6697beb607
commit
a497254874
|
|
@ -0,0 +1,109 @@
|
||||||
|
// Game: Quake 2
|
||||||
|
// Format: Quake2
|
||||||
|
// entity 0
|
||||||
|
{
|
||||||
|
"classname" "worldspawn"
|
||||||
|
"_tb_textures" "textures/e1u1"
|
||||||
|
"_bounce" "0"
|
||||||
|
// brush 0
|
||||||
|
{
|
||||||
|
( 480 1088 928 ) ( 480 1089 928 ) ( 480 1088 929 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 704 1088 928 ) ( 704 1088 929 ) ( 705 1088 928 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 704 1088 928 ) ( 705 1088 928 ) ( 704 1089 928 ) e1u1/twall2_1 0 0 0 1 1
|
||||||
|
( 944 1472 944 ) ( 944 1473 944 ) ( 945 1472 944 ) e1u1/twall2_1 0 0 0 1 1
|
||||||
|
( 944 1488 944 ) ( 945 1488 944 ) ( 944 1488 945 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 1440 1472 944 ) ( 1440 1472 945 ) ( 1440 1473 944 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
}
|
||||||
|
// brush 1
|
||||||
|
{
|
||||||
|
( 480 1088 1248 ) ( 480 1089 1248 ) ( 480 1088 1249 ) e1u1/twall2_1 0 96 0 1 1
|
||||||
|
( 704 1072 1248 ) ( 704 1072 1249 ) ( 705 1072 1248 ) e1u1/twall2_1 0 96 0 1 1
|
||||||
|
( 704 1088 1248 ) ( 705 1088 1248 ) ( 704 1089 1248 ) e1u1/twall2_1 0 0 0 1 1
|
||||||
|
( 944 1472 1264 ) ( 944 1473 1264 ) ( 945 1472 1264 ) e1u1/twall2_1 0 0 0 1 1
|
||||||
|
( 944 1488 1264 ) ( 945 1488 1264 ) ( 944 1488 1265 ) e1u1/twall2_1 0 96 0 1 1
|
||||||
|
( 1440 1472 1264 ) ( 1440 1472 1265 ) ( 1440 1473 1264 ) e1u1/twall2_1 0 96 0 1 1
|
||||||
|
}
|
||||||
|
// brush 2
|
||||||
|
{
|
||||||
|
( 480 1072 928 ) ( 480 1073 928 ) ( 480 1072 929 ) e1u1/twall2_1 16 32 0 1 1
|
||||||
|
( 704 1072 928 ) ( 704 1072 929 ) ( 705 1072 928 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 704 1072 928 ) ( 705 1072 928 ) ( 704 1073 928 ) e1u1/twall2_1 0 -16 0 1 1
|
||||||
|
( 944 1456 1248 ) ( 944 1457 1248 ) ( 945 1456 1248 ) e1u1/twall2_1 0 -16 0 1 1
|
||||||
|
( 944 1088 944 ) ( 945 1088 944 ) ( 944 1088 945 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 1456 1456 944 ) ( 1456 1456 945 ) ( 1456 1457 944 ) e1u1/twall2_1 16 32 0 1 1
|
||||||
|
}
|
||||||
|
// brush 3
|
||||||
|
{
|
||||||
|
( 480 1392 928 ) ( 480 1393 928 ) ( 480 1392 929 ) e1u1/twall2_1 -48 32 0 1 1
|
||||||
|
( 832 1472 928 ) ( 832 1472 929 ) ( 833 1472 928 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 832 1392 928 ) ( 833 1392 928 ) ( 832 1393 928 ) e1u1/twall2_1 -128 48 0 1 1
|
||||||
|
( 1072 1776 1248 ) ( 1072 1777 1248 ) ( 1073 1776 1248 ) e1u1/twall2_1 -128 48 0 1 1
|
||||||
|
( 1072 1504 944 ) ( 1073 1504 944 ) ( 1072 1504 945 ) e1u1/twall2_1 -128 32 0 1 1
|
||||||
|
( 1440 1392 928 ) ( 1440 1392 929 ) ( 1440 1393 928 ) e1u1/twall2_1 -48 32 0 1 1
|
||||||
|
}
|
||||||
|
// brush 4
|
||||||
|
{
|
||||||
|
( 1440 1088 1056 ) ( 1440 1089 1056 ) ( 1440 1088 1057 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 1120 1088 1056 ) ( 1120 1088 1057 ) ( 1121 1088 1056 ) e1u1/twall2_1 96 32 0 1 1
|
||||||
|
( 1120 1088 928 ) ( 1121 1088 928 ) ( 1120 1089 928 ) e1u1/twall2_1 96 0 0 1 1
|
||||||
|
( 1360 1472 1248 ) ( 1360 1473 1248 ) ( 1361 1472 1248 ) e1u1/twall2_1 96 0 0 1 1
|
||||||
|
( 1360 1488 1072 ) ( 1361 1488 1072 ) ( 1360 1488 1073 ) e1u1/twall2_1 96 32 0 1 1
|
||||||
|
( 1456 1472 1072 ) ( 1456 1472 1073 ) ( 1456 1473 1072 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
}
|
||||||
|
// brush 5
|
||||||
|
{
|
||||||
|
( 464 1088 1056 ) ( 464 1089 1056 ) ( 464 1088 1057 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
( 144 1072 1056 ) ( 144 1072 1057 ) ( 145 1072 1056 ) e1u1/twall2_1 48 32 0 1 1
|
||||||
|
( 144 1088 928 ) ( 145 1088 928 ) ( 144 1089 928 ) e1u1/twall2_1 48 0 0 1 1
|
||||||
|
( 384 1472 1248 ) ( 384 1473 1248 ) ( 385 1472 1248 ) e1u1/twall2_1 48 0 0 1 1
|
||||||
|
( 384 1488 1072 ) ( 385 1488 1072 ) ( 384 1488 1073 ) e1u1/twall2_1 48 32 0 1 1
|
||||||
|
( 480 1472 1072 ) ( 480 1472 1073 ) ( 480 1473 1072 ) e1u1/twall2_1 0 32 0 1 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// entity 1
|
||||||
|
{
|
||||||
|
"classname" "info_player_start"
|
||||||
|
"origin" "1048 1120 968"
|
||||||
|
"angle" "90"
|
||||||
|
}
|
||||||
|
// entity 2
|
||||||
|
{
|
||||||
|
"classname" "light"
|
||||||
|
"origin" "904 1216 952"
|
||||||
|
"target" "t1"
|
||||||
|
"light" "500"
|
||||||
|
}
|
||||||
|
// entity 3
|
||||||
|
{
|
||||||
|
"classname" "light"
|
||||||
|
"origin" "1048 1216 952"
|
||||||
|
"target" "t2"
|
||||||
|
"_cone" "10"
|
||||||
|
"light" "500"
|
||||||
|
}
|
||||||
|
// entity 4
|
||||||
|
{
|
||||||
|
"classname" "light"
|
||||||
|
"origin" "1192 1216 952"
|
||||||
|
"target" "t3"
|
||||||
|
"angle" "20"
|
||||||
|
"light" "500"
|
||||||
|
}
|
||||||
|
// entity 5
|
||||||
|
{
|
||||||
|
"classname" "info_null"
|
||||||
|
"origin" "904 1256 952"
|
||||||
|
"targetname" "t1"
|
||||||
|
}
|
||||||
|
// entity 6
|
||||||
|
{
|
||||||
|
"classname" "info_null"
|
||||||
|
"origin" "1048 1256 952"
|
||||||
|
"targetname" "t2"
|
||||||
|
}
|
||||||
|
// entity 7
|
||||||
|
{
|
||||||
|
"classname" "info_null"
|
||||||
|
"origin" "1192 1256 952"
|
||||||
|
"targetname" "t3"
|
||||||
|
}
|
||||||
|
|
@ -513,3 +513,20 @@ TEST_CASE("surface lights minlight" * doctest::may_fail()) {
|
||||||
|
|
||||||
CheckFaceLuxels(bsp, *liquid_face, l, &lit);
|
CheckFaceLuxels(bsp, *liquid_face, l, &lit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("q2_light_cone") {
|
||||||
|
auto [bsp, bspx] = QbspVisLight_Q2("q2_light_cone.map", {});
|
||||||
|
|
||||||
|
// lights are 256 units from wall
|
||||||
|
// all 3 lights have a 10 degree cone radius
|
||||||
|
// radius on wall should be 256 * sin(10 degrees) = 44.45 units
|
||||||
|
|
||||||
|
auto check_cutoff = [&](const qvec3d &position){
|
||||||
|
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {0,0,0}, position + qvec3d{16,0,0});
|
||||||
|
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {243,243,243}, position - qvec3d{16,0,0});
|
||||||
|
};
|
||||||
|
|
||||||
|
check_cutoff({948, 1472, 952});
|
||||||
|
check_cutoff({1092, 1472, 952});
|
||||||
|
check_cutoff({1236, 1472, 952});
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue