test: lightmap artifacts on a low luxel scale
This commit is contained in:
parent
5f7e08d0ef
commit
cfd3336644
|
|
@ -0,0 +1,98 @@
|
|||
// Game: Quake 2
|
||||
// Format: Quake2 (Valve)
|
||||
// entity 0
|
||||
{
|
||||
"classname" "worldspawn"
|
||||
"_tb_textures" "textures/e1u1"
|
||||
"_minlightMottle" "0"
|
||||
"_minlight" "0"
|
||||
// brush 0
|
||||
{
|
||||
( 2960 1064 -656 ) ( 2960 1048 -656 ) ( 2960 1048 -672 ) e1u1/color1_2 [ 0 1 0 -8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2960 1048 -656 ) ( 2968 1048 -656 ) ( 2968 1048 -672 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 1048 -672 ) ( 2968 1064 -672 ) ( 2960 1064 -672 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 8 ] 0 1 1
|
||||
( 2960 1064 -656 ) ( 2968 1064 -656 ) ( 2968 1048 -656 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 8 ] 0 1 1
|
||||
( 2968 1064 -672 ) ( 2968 1064 -656 ) ( 2960 1064 -656 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 1048 -656 ) ( 2968 1064 -656 ) ( 2968 1064 -672 ) e1u1/color1_2 [ 0 1 0 -8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( 2960 1064 -696 ) ( 2960 1048 -696 ) ( 2960 1048 -712 ) e1u1/color1_2 [ 0 1 0 -8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2960 1048 -696 ) ( 2968 1048 -696 ) ( 2968 1048 -712 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 1048 -712 ) ( 2968 1064 -712 ) ( 2960 1064 -712 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 8 ] 0 1 1
|
||||
( 2960 1064 -696 ) ( 2968 1064 -696 ) ( 2968 1048 -696 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 8 ] 0 1 1
|
||||
( 2968 1064 -712 ) ( 2968 1064 -696 ) ( 2960 1064 -696 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 1048 -696 ) ( 2968 1064 -696 ) ( 2968 1064 -712 ) e1u1/color1_2 [ 0 1 0 -8 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( 2964 1128 -544 ) ( 2964 980 -544 ) ( 2964 1128 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 980 -760 ) ( 2964 980 -760 ) ( 2968 980 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 1128 -760 ) ( 2964 1128 -760 ) ( 2968 980 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2968 980 -544 ) ( 2964 980 -544 ) ( 2968 1128 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2968 1128 -544 ) ( 2964 1128 -544 ) ( 2968 1128 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2968 980 -544 ) ( 2968 1128 -544 ) ( 2968 980 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( 2744 980 -760 ) ( 2744 1128 -760 ) ( 2744 980 -544 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2744 980 -544 ) ( 2748 980 -544 ) ( 2744 980 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2744 980 -760 ) ( 2748 980 -760 ) ( 2744 1128 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2744 1128 -544 ) ( 2748 1128 -544 ) ( 2744 980 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2744 1128 -760 ) ( 2748 1128 -760 ) ( 2744 1128 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2748 980 -760 ) ( 2748 980 -544 ) ( 2748 1128 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( 2748 1128 -544 ) ( 2748 1124 -544 ) ( 2748 1128 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 1124 -544 ) ( 2964 1124 -760 ) ( 2748 1124 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2748 1128 -760 ) ( 2748 1124 -760 ) ( 2964 1128 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2964 1128 -544 ) ( 2964 1124 -544 ) ( 2748 1128 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2964 1128 -544 ) ( 2748 1128 -544 ) ( 2964 1128 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 1128 -760 ) ( 2964 1124 -760 ) ( 2964 1128 -544 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( 2748 980 -760 ) ( 2748 984 -760 ) ( 2748 980 -544 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 980 -760 ) ( 2748 980 -760 ) ( 2964 980 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 980 -760 ) ( 2964 984 -760 ) ( 2748 980 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2748 980 -544 ) ( 2748 984 -544 ) ( 2964 980 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2748 984 -760 ) ( 2964 984 -760 ) ( 2748 984 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 980 -544 ) ( 2964 984 -544 ) ( 2964 980 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( 2748 984 -544 ) ( 2748 984 -548 ) ( 2748 1124 -544 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 984 -544 ) ( 2964 984 -548 ) ( 2748 984 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 1124 -548 ) ( 2748 1124 -548 ) ( 2964 984 -548 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2964 1124 -544 ) ( 2964 984 -544 ) ( 2748 1124 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2748 1124 -544 ) ( 2748 1124 -548 ) ( 2964 1124 -544 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 1124 -544 ) ( 2964 1124 -548 ) ( 2964 984 -544 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( 2748 1124 -760 ) ( 2748 1124 -756 ) ( 2748 984 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2748 984 -760 ) ( 2748 984 -756 ) ( 2964 984 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2748 1124 -760 ) ( 2748 984 -760 ) ( 2964 1124 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2748 984 -756 ) ( 2748 1124 -756 ) ( 2964 984 -756 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 2964 1124 -760 ) ( 2964 1124 -756 ) ( 2748 1124 -760 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 2964 984 -760 ) ( 2964 984 -756 ) ( 2964 1124 -760 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "2888 1058 -712"
|
||||
}
|
||||
// entity 2
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "2936 1044 -702"
|
||||
"light" "100"
|
||||
}
|
||||
// entity 3
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "2936 1044 -666"
|
||||
"light" "100"
|
||||
}
|
||||
|
|
@ -260,10 +260,13 @@ static void CheckFaceLuxelAtPoint(const mbsp_t *bsp, const dmodelh2_t *model, co
|
|||
}
|
||||
|
||||
const auto coord = extents.worldToLMCoord(point);
|
||||
const auto int_coord = qvec2i(round(coord[0]), round(coord[1]));
|
||||
|
||||
const qvec3b sample = LM_Sample(bsp, lit, extents, offset, qvec2i(coord));
|
||||
const qvec3b sample = LM_Sample(bsp, lit, extents, offset, int_coord);
|
||||
INFO("world point: ", point);
|
||||
INFO("lm coord: ", coord[0], ", ", coord[1]);
|
||||
INFO("lm int_coord: ", int_coord[0], ", ", int_coord[1]);
|
||||
INFO("face num: ", Face_GetNum(bsp, face));
|
||||
|
||||
CHECK(sample == expected_color);
|
||||
}
|
||||
|
|
@ -517,7 +520,7 @@ TEST_CASE("light channel mask / dirt interaction")
|
|||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {26, 26, 26}, {1432, 1480, 944});
|
||||
|
||||
INFO("worldspawn not receiving dirt from func_wall on different channel");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {62, 62, 62}, {1212, 1272, 1014});
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {60, 60, 60}, {1212, 1272, 1014});
|
||||
|
||||
INFO("func_wall on different channel not receiving dirt from worldspawn");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[1], {64, 64, 64}, {1216, 1266, 1014});
|
||||
|
|
@ -667,4 +670,15 @@ TEST_CASE("q2_light_low_luxel_res")
|
|||
INFO("sloped cube");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {232, 185, 0}, {2164, 712, -968}, {0, 1, 0}, nullptr, &bspx);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("q2_light_low_luxel_res2" * doctest::may_fail())
|
||||
{
|
||||
auto [bsp, bspx] = QbspVisLight_Q2(
|
||||
"q2_light_low_luxel_res2.map", {"-world_units_per_luxel", "32", "-debugface", "2964", "1020", "-696"});
|
||||
|
||||
INFO("should be a smooth transition across these points");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {49, 49, 49}, {2964, 1046, -694}, {-1, 0, 0}, nullptr, &bspx);
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {25, 25, 25}, {2964, 1046, -706}, {-1, 0, 0}, nullptr, &bspx);
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {1, 1, 1}, {2964, 1046, -716}, {-1, 0, 0}, nullptr, &bspx);
|
||||
}
|
||||
Loading…
Reference in New Issue