light: add missing model offset for luxel occlusion check against bmodels with origin brush
This commit is contained in:
parent
8d368060eb
commit
c2a787f6a3
|
|
@ -309,7 +309,7 @@ static bool Light_PointInAnySolid(const mbsp_t *bsp, const dmodelh2_t *self, con
|
|||
if (modelinfo->object_channel_mask.value() != self_modelinfo->object_channel_mask.value())
|
||||
continue;
|
||||
|
||||
if (Light_PointInSolid(bsp, modelinfo->model, point)) {
|
||||
if (Light_PointInSolid(bsp, modelinfo->model, point - modelinfo->offset)) {
|
||||
// Only mark occluded if the bmodel is fully opaque
|
||||
if (modelinfo->alpha.value() == 1.0f)
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -60,6 +60,51 @@
|
|||
( -576 224 128 ) ( -575 224 128 ) ( -576 224 129 ) e1u1/sky1 0 16 0 1 1
|
||||
( -480 208 128 ) ( -480 208 129 ) ( -480 209 128 ) e1u1/sky1 16 16 0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( -4 -1 0 ) ( -4 0 0 ) ( -4 -1 1 ) e1u1/twall2_1 64 16 0 1 1
|
||||
( -1 -4 0 ) ( -1 -4 1 ) ( 0 -4 0 ) e1u1/twall2_1 64 16 0 1 1
|
||||
( -1 -1 0 ) ( 0 -1 0 ) ( -1 0 0 ) e1u1/twall2_1 64 16 0 1 1
|
||||
( 1 1 1 ) ( 1 2 1 ) ( 2 1 1 ) e1u1/twall2_1 64 16 0 1 1
|
||||
( 1 4 1 ) ( 2 4 1 ) ( 1 4 2 ) e1u1/twall2_1 64 16 0 1 1
|
||||
( 4 1 1 ) ( 4 1 2 ) ( 4 2 1 ) e1u1/twall2_1 64 16 0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( -324 175 0 ) ( -324 176 0 ) ( -324 175 1 ) e1u1/twall2_1 -112 16 0 1 1
|
||||
( -321 172 0 ) ( -321 172 1 ) ( -320 172 0 ) e1u1/twall2_1 0 16 0 1 1
|
||||
( -321 175 0 ) ( -320 175 0 ) ( -321 176 0 ) e1u1/twall2_1 0 64 0 1 1
|
||||
( -319 177 1 ) ( -319 178 1 ) ( -318 177 1 ) e1u1/twall2_1 0 64 0 1 1
|
||||
( -319 180 1 ) ( -318 180 1 ) ( -319 180 2 ) e1u1/twall2_1 0 16 0 1 1
|
||||
( -316 177 1 ) ( -316 177 2 ) ( -316 178 1 ) e1u1/twall2_1 -112 16 0 1 1
|
||||
}
|
||||
// brush 8
|
||||
{
|
||||
( -324 79 0 ) ( -324 80 0 ) ( -324 79 1 ) e1u1/twall2_1 -16 16 0 1 1
|
||||
( -321 76 0 ) ( -321 76 1 ) ( -320 76 0 ) e1u1/twall2_1 0 16 0 1 1
|
||||
( -321 79 0 ) ( -320 79 0 ) ( -321 80 0 ) e1u1/twall2_1 0 -32 0 1 1
|
||||
( -319 81 1 ) ( -319 82 1 ) ( -318 81 1 ) e1u1/twall2_1 0 -32 0 1 1
|
||||
( -319 84 1 ) ( -318 84 1 ) ( -319 84 2 ) e1u1/twall2_1 0 16 0 1 1
|
||||
( -316 81 1 ) ( -316 81 2 ) ( -316 82 1 ) e1u1/twall2_1 -16 16 0 1 1
|
||||
}
|
||||
// brush 9
|
||||
{
|
||||
( -436 79 0 ) ( -436 80 0 ) ( -436 79 1 ) e1u1/twall2_1 -16 16 0 1 1
|
||||
( -433 76 0 ) ( -433 76 1 ) ( -432 76 0 ) e1u1/twall2_1 112 16 0 1 1
|
||||
( -433 79 0 ) ( -432 79 0 ) ( -433 80 0 ) e1u1/twall2_1 112 -32 0 1 1
|
||||
( -431 81 1 ) ( -431 82 1 ) ( -430 81 1 ) e1u1/twall2_1 112 -32 0 1 1
|
||||
( -431 84 1 ) ( -430 84 1 ) ( -431 84 2 ) e1u1/twall2_1 112 16 0 1 1
|
||||
( -428 81 1 ) ( -428 81 2 ) ( -428 82 1 ) e1u1/twall2_1 -16 16 0 1 1
|
||||
}
|
||||
// brush 10
|
||||
{
|
||||
( -436 175 0 ) ( -436 176 0 ) ( -436 175 1 ) e1u1/twall2_1 -112 16 0 1 1
|
||||
( -433 172 0 ) ( -433 172 1 ) ( -432 172 0 ) e1u1/twall2_1 112 16 0 1 1
|
||||
( -433 175 0 ) ( -432 175 0 ) ( -433 176 0 ) e1u1/twall2_1 112 64 0 1 1
|
||||
( -431 177 1 ) ( -431 178 1 ) ( -430 177 1 ) e1u1/twall2_1 112 64 0 1 1
|
||||
( -431 180 1 ) ( -430 180 1 ) ( -431 180 2 ) e1u1/twall2_1 112 16 0 1 1
|
||||
( -428 177 1 ) ( -428 177 2 ) ( -428 178 1 ) e1u1/twall2_1 -112 16 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
|
|
|
|||
|
|
@ -595,13 +595,13 @@ TEST_CASE("q2_light_origin_brush_shadow")
|
|||
{
|
||||
auto [bsp, bspx] = QbspVisLight_Q2("q2_light_origin_brush_shadow.map", {});
|
||||
|
||||
const qvec3d under_shadow_bmodel{-320, 176, 0};
|
||||
const qvec3d under_nonshadow_bmodel{-432, 176, 0};
|
||||
const qvec3d under_shadow_bmodel{-320, 176, 1};
|
||||
const qvec3d under_nonshadow_bmodel{-432, 176, 1};
|
||||
|
||||
const qvec3d under_nodraw_shadow_bmodel = under_shadow_bmodel - qvec3d(0, 96, 0);
|
||||
const qvec3d under_nodraw_nonshadow_bmodel = under_nonshadow_bmodel - qvec3d(0, 96, 0);
|
||||
|
||||
const qvec3d at_origin{0, 0, 0};
|
||||
const qvec3d at_origin{0, 0, 1};
|
||||
|
||||
INFO("ensure expected shadow");
|
||||
CheckFaceLuxelAtPoint(&bsp, &bsp.dmodels[0], {0, 0, 0}, under_shadow_bmodel);
|
||||
|
|
|
|||
Loading…
Reference in New Issue