light: block phong if certain surfflag bits differ between the two faces

this prevents liquids from phonging with solids
This commit is contained in:
Eric Wasylishen 2022-11-30 22:15:58 -07:00
parent ab78b43c52
commit 96bdf141bb
5 changed files with 208 additions and 0 deletions

View File

@ -325,6 +325,12 @@ public:
return (flags.native & ~TEX_SPECIAL) == 0;
}
bool surfflags_may_phong(const surfflags_t &a, const surfflags_t &b) const override
{
return (a.native & TEX_SPECIAL)
== (b.native & TEX_SPECIAL);
}
int32_t surfflags_from_string(const std::string_view &str) const override
{
if (string_iequals(str, "special")) {
@ -924,6 +930,17 @@ struct gamedef_q2_t : public gamedef_t
return true;
}
bool surfflags_may_phong(const surfflags_t &a, const surfflags_t &b) const override
{
// these are the bits we'll require to match in order to allow phonging `a` and `b`
auto mask = [](const surfflags_t &flags) {
return flags.native & (Q2_SURF_SKY | Q2_SURF_WARP | Q2_SURF_TRANS33 |
Q2_SURF_TRANS66 | Q2_SURF_FLOWING | Q2_SURF_NODRAW);
};
return mask(a) == mask(b);
}
static constexpr const char *surf_bitflag_names[] = {
"LIGHT", "SLICK", "SKY", "WARP", "TRANS33", "TRANS66", "FLOWING", "NODRAW",
"HINT", "512", "1024", "2048", "4096", "8192", "16384", "32768", "65536",

View File

@ -264,6 +264,11 @@ struct gamedef_t
virtual bool surf_is_lightmapped(const surfflags_t &flags) const = 0;
virtual bool surf_is_subdivided(const surfflags_t &flags) const = 0;
virtual bool surfflags_are_valid(const surfflags_t &flags) const = 0;
/**
* We block certain surface flag combinations from ever smoothing together
* e.g. warping and non-warping
*/
virtual bool surfflags_may_phong(const surfflags_t &a, const surfflags_t &b) const = 0;
virtual int32_t surfflags_from_string(const std::string_view &str) const = 0;
// FIXME: fix so that we don't have to pass a name here
virtual bool texinfo_is_hintskip(const surfflags_t &flags, const std::string &name) const = 0;

View File

@ -473,6 +473,7 @@ void CalculateVertexNormals(const mbsp_t *bsp)
}
// Q1 phong angle stuff
auto *f_texinfo = Face_Texinfo(bsp, &f);
const auto f_points = GLM_FacePoints(bsp, &f);
const qvec3d f_norm = Face_Normal(bsp, &f);
const qplane3d f_plane = Face_Plane(bsp, &f);
@ -506,6 +507,14 @@ void CalculateVertexNormals(const mbsp_t *bsp)
if (!f2_wants_phong)
continue;
auto *f2_texinfo = Face_Texinfo(bsp, f2);
if (f2_texinfo != nullptr && f_texinfo != nullptr) {
if (!bsp->loadversion->game->surfflags_may_phong(f_texinfo->flags, f2_texinfo->flags)) {
// phong may be blocked by the gamedef, e.g. warping and non-warping never phong
continue;
}
}
const auto f2_points = GLM_FacePoints(bsp, f2);
const qvec3f f2_centroid = qv::PolyCentroid(f2_points.begin(), f2_points.end());
const qvec3d f2_norm = Face_Normal(bsp, f2);

View File

@ -0,0 +1,173 @@
// Game: Quake 2
// Format: Quake2 (Valve)
// entity 0
{
"mapversion" "220"
"classname" "worldspawn"
"_tb_textures" "textures/e1u1"
"_phong" "1"
// brush 0
{
( 368 64 112 ) ( 368 -64 112 ) ( 368 64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -64 -16 ) ( 368 -64 -16 ) ( 384 -64 112 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 384 64 -16 ) ( 368 64 -16 ) ( 384 -64 -16 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 -1 0 0 ] 0 1 1
( 384 -64 272 ) ( 368 -64 272 ) ( 384 64 272 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 -1 0 0 ] 0 1 1
( 384 224 112 ) ( 368 224 112 ) ( 384 224 -16 ) e1u1/c_met11_2 [ 1 0 0 -64 ] [ 0 0 -1 0 ] 0 1 1
( 384 -64 112 ) ( 384 64 112 ) ( 384 -64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 1
{
( -496 112 -16 ) ( -496 240 -16 ) ( -496 112 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -496 -48 112 ) ( -480 -48 112 ) ( -496 -48 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -496 112 -16 ) ( -480 112 -16 ) ( -496 240 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -496 240 272 ) ( -480 240 272 ) ( -496 112 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -496 240 -16 ) ( -480 240 -16 ) ( -496 240 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -480 112 -16 ) ( -480 112 112 ) ( -480 240 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 2
{
( -480 240 112 ) ( -480 224 112 ) ( -480 240 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -384 224 112 ) ( -384 224 -16 ) ( -480 224 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -480 240 -16 ) ( -480 224 -16 ) ( -384 240 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -384 240 272 ) ( -384 224 272 ) ( -480 240 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -384 240 112 ) ( -480 240 112 ) ( -384 240 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 240 -16 ) ( 384 224 -16 ) ( 384 240 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 3
{
( -480 -64 -16 ) ( -480 -48 -16 ) ( -480 -64 112 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -64 -16 ) ( -48 -64 -16 ) ( 48 -64 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -64 -16 ) ( 48 -48 -16 ) ( -48 -64 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 -64 272 ) ( -48 -48 272 ) ( 48 -64 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 -48 -16 ) ( 48 -48 -16 ) ( -48 -48 112 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -64 112 ) ( 384 -48 112 ) ( 384 -64 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 4
{
( -480 -48 288 ) ( -480 -48 272 ) ( -480 48 288 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 -48 288 ) ( 48 -48 272 ) ( -48 -48 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 48 48 272 ) ( -48 48 272 ) ( 48 -48 272 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 48 48 288 ) ( 48 -48 288 ) ( -48 48 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 224 288 ) ( -48 224 272 ) ( 48 224 288 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 48 288 ) ( 384 48 272 ) ( 384 -48 288 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 5
{
( -480 48 -16 ) ( -480 48 0 ) ( -480 -48 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -48 -48 -16 ) ( -48 -48 0 ) ( 48 -48 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -48 48 -16 ) ( -48 -48 -16 ) ( 48 48 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -48 -48 0 ) ( -48 48 0 ) ( 48 -48 0 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 48 224 -16 ) ( 48 224 0 ) ( -48 224 -16 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 384 -48 -16 ) ( 384 -48 0 ) ( 384 48 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 6
{
( -368 0 -144 ) ( -368 1 -144 ) ( -368 0 -140 ) e1u1/brwater [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 32 24 0
( -336 -48 -144 ) ( -336 -48 -140 ) ( -335 -48 -144 ) e1u1/brwater [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1 32 24 0
( -336 0 0 ) ( -335 0 0 ) ( -336 1 0 ) e1u1/brwater [ -1 0 0 -16 ] [ 0 -1 0 0 ] 0 1 1 32 24 0
( -144 192 48 ) ( -144 193 48 ) ( -143 192 48 ) e1u1/brwater [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1 32 24 0
( -144 220 -80 ) ( -143 220 -80 ) ( -144 220 -76 ) e1u1/brwater [ -1 0 0 -16 ] [ 0 0 -1 0 ] 0 1 1 32 24 0
( -256 192 -80 ) ( -256 192 -76 ) ( -256 193 -80 ) e1u1/brwater [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 32 24 0
}
// brush 7
{
( -368 220 128 ) ( -368 144 36.36363636364695 ) ( -368 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -368 144 36.36363636364695 ) ( -144 144 36.36363636364695 ) ( -144 144 0 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -368 220 128 ) ( -144 220 128 ) ( -144 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -144 144 0 ) ( -144 220 0 ) ( -368 220 0 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
( -144 220 0 ) ( -144 220 128 ) ( -368 220 128 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -256 144 36.36363636364695 ) ( -256 220 128 ) ( -256 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 8
{
( -368 144 0 ) ( -368 144 36.36363636364695 ) ( -368 77.33333333330674 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -144 77.33333333330684 0 ) ( -144 144 0 ) ( -368 144 0 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
( -144 144 0 ) ( -144 144 36.36363636364689 ) ( -368 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -144 77.33333333330684 0 ) ( -368 77.33333333330674 0 ) ( -368 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
( -256 77.33333333330684 0 ) ( -256 144 36.36363636364689 ) ( -256 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 9
{
( -240 220 128 ) ( -240 144 36.36363636364695 ) ( -240 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -240 144 36.36363636364695 ) ( -16 144 36.36363636364695 ) ( -16 144 0 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -240 220 128 ) ( -16 220 128 ) ( -16 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -16 144 0 ) ( -16 220 0 ) ( -240 220 0 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
( -16 220 0 ) ( -16 220 128 ) ( -240 220 128 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -128 144 36.36363636364695 ) ( -128 220 128 ) ( -128 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 10
{
( -240 144 0 ) ( -240 144 36.36363636364695 ) ( -240 77.33333333330674 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -16 77.33333333330684 0 ) ( -16 144 0 ) ( -240 144 0 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
( -16 144 0 ) ( -16 144 36.36363636364689 ) ( -240 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
( -16 77.33333333330684 0 ) ( -240 77.33333333330674 0 ) ( -240 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
( -128 77.33333333330684 0 ) ( -128 144 36.36363636364689 ) ( -128 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 11
{
( -112 220 128 ) ( -112 144 36.36363636364695 ) ( -112 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -112 144 36.36363636364695 ) ( 112 144 36.36363636364695 ) ( 112 144 0 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( -112 220 128 ) ( 112 220 128 ) ( 112 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 112 144 0 ) ( 112 220 0 ) ( -112 220 0 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 -1 0 0 ] 0 1 1
( 112 220 0 ) ( 112 220 128 ) ( -112 220 128 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 0 144 36.36363636364695 ) ( 0 220 128 ) ( 0 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 12
{
( -112 144 0 ) ( -112 144 36.36363636364695 ) ( -112 77.33333333330674 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 112 77.33333333330684 0 ) ( 112 144 0 ) ( -112 144 0 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 -1 0 0 ] 0 1 1
( 112 144 0 ) ( 112 144 36.36363636364689 ) ( -112 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 112 77.33333333330684 0 ) ( -112 77.33333333330674 0 ) ( -112 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 -1 0 0 ] 0 1 1
( 0 77.33333333330684 0 ) ( 0 144 36.36363636364689 ) ( 0 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 13
{
( -112 0 -144 ) ( -112 1 -144 ) ( -112 0 -140 ) e1u1/brwater [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 32 0 0
( -80 -48 -144 ) ( -80 -48 -140 ) ( -79 -48 -144 ) e1u1/brwater [ 1 0 0 -48 ] [ 0 0 -1 0 ] 0 1 1 32 0 0
( -80 0 0 ) ( -79 0 0 ) ( -80 1 0 ) e1u1/brwater [ -1 0 0 48 ] [ 0 -1 0 0 ] 0 1 1 32 0 0
( 112 192 48 ) ( 112 193 48 ) ( 113 192 48 ) e1u1/brwater [ 1 0 0 -48 ] [ 0 -1 0 0 ] 0 1 1 32 0 0
( 112 220 -80 ) ( 113 220 -80 ) ( 112 220 -76 ) e1u1/brwater [ -1 0 0 48 ] [ 0 0 -1 0 ] 0 1 1 32 0 0
( 0 192 -80 ) ( 0 192 -76 ) ( 0 193 -80 ) e1u1/brwater [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 32 0 0
}
// brush 14
{
( 16 144 0 ) ( 16 144 36.36363636364695 ) ( 16 77.33333333330674 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 240 77.33333333330684 0 ) ( 240 144 0 ) ( 16 144 0 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 -1 0 0 ] 0 1 1
( 240 144 0 ) ( 240 144 36.36363636364689 ) ( 16 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 240 77.33333333330684 0 ) ( 16 77.33333333330674 0 ) ( 16 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 -1 0 0 ] 0 1 1
( 128 77.33333333330684 0 ) ( 128 144 36.36363636364689 ) ( 128 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 15
{
( 16 220 128 ) ( 16 144 36.36363636364695 ) ( 16 144 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 16 144 36.36363636364695 ) ( 240 144 36.36363636364695 ) ( 240 144 0 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 16 220 128 ) ( 240 220 128 ) ( 240 144 36.36363636364695 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 240 144 0 ) ( 240 220 0 ) ( 16 220 0 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 -1 0 0 ] 0 1 1
( 240 220 0 ) ( 240 220 128 ) ( 16 220 128 ) e1u1/c_met11_2 [ 1 0 0 -112 ] [ 0 0 -1 0 ] 0 1 1
( 128 144 36.36363636364695 ) ( 128 220 128 ) ( 128 220 0 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 16
{
( 16 0 -144 ) ( 16 1 -144 ) ( 16 0 -140 ) e1u1/brwater [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 32 0 100
( 48 -48 -144 ) ( 48 -48 -140 ) ( 49 -48 -144 ) e1u1/brwater [ 1 0 0 -48 ] [ 0 0 -1 0 ] 0 1 1 32 0 100
( 48 0 0 ) ( 49 0 0 ) ( 48 1 0 ) e1u1/brwater [ -1 0 0 48 ] [ 0 -1 0 0 ] 0 1 1 32 0 100
( 240 192 48 ) ( 240 193 48 ) ( 241 192 48 ) e1u1/brwater [ 1 0 0 -48 ] [ 0 -1 0 0 ] 0 1 1 32 0 100
( 240 220 -80 ) ( 241 220 -80 ) ( 240 220 -76 ) e1u1/brwater [ -1 0 0 48 ] [ 0 0 -1 0 ] 0 1 1 32 0 100
( 128 192 -80 ) ( 128 192 -76 ) ( 128 193 -80 ) e1u1/brwater [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 32 0 100
}
// brush 17
{
( -480 -64 64 ) ( -480 -63 64 ) ( -480 -64 65 ) e1u1/c_met11_2 [ 0 1.0000000000000002 0 -80 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
( -1024 -48 64 ) ( -1024 -48 65 ) ( -1023 -48 64 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -1024 -64 92 ) ( -1023 -64 92 ) ( -1024 -63 92 ) e1u1/c_met11_2 [ 1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 0 -112 ] 0 1 1
( 224 -32 96 ) ( 224 -31 96 ) ( 225 -32 96 ) e1u1/c_met11_2 [ 1.0000000000000002 0 0 0 ] [ 0 1.0000000000000002 0 -48 ] 0 1 1
( 224 -8 96 ) ( 225 -8 96 ) ( 224 -8 97 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 224 -32 96 ) ( 224 -32 97 ) ( 224 -31 96 ) e1u1/c_met11_2 [ 0 -1.0000000000000002 0 48 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1
}
}
// entity 1
{
"classname" "info_player_start"
"origin" "188.686 -28.4041 120"
"angle" "165"
}

View File

@ -169,3 +169,7 @@ TEST_CASE("emissive lights") {
}
}
}
TEST_CASE("q2_phong_doesnt_cross_contents") {
auto [bsp, bspx] = LoadTestmap("q2_phong_doesnt_cross_contents.map", {"-wrnormals"});
}