From 8caaf7236fe474d9593d4fe2698b232a5f5a9eb5 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Wed, 14 Dec 2022 23:19:58 -0700 Subject: [PATCH] test: add q2 test case for alpha mask textures --- testmaps/q2_light_translucency.map | 106 ++++++++++++++++-- .../textures/e1u1/alphamask.wal | Bin 0 -> 5540 bytes tests/test_ltface.cc | 18 +++ 3 files changed, 114 insertions(+), 10 deletions(-) create mode 100644 testmaps/q2_wal_metadata/textures/e1u1/alphamask.wal diff --git a/testmaps/q2_light_translucency.map b/testmaps/q2_light_translucency.map index e1ae269f..9f50042a 100644 --- a/testmaps/q2_light_translucency.map +++ b/testmaps/q2_light_translucency.map @@ -9,7 +9,7 @@ "_tb_def" "builtin:Quake2.fgd" // brush 0 { -( -768 -256 16 ) ( -768 -255 16 ) ( -768 -256 17 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1280 -256 16 ) ( -1280 -255 16 ) ( -1280 -256 17 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 80 -384 16 ) ( 80 -384 17 ) ( 81 -384 16 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 80 -256 16 ) ( 81 -256 16 ) ( 80 -255 16 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ( 496 -32 32 ) ( 496 -31 32 ) ( 497 -32 32 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 @@ -18,7 +18,7 @@ } // brush 1 { -( -768 -384 32 ) ( -768 -383 32 ) ( -768 -384 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1280 -384 32 ) ( -1280 -383 32 ) ( -1280 -384 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( -160 -384 32 ) ( -160 -384 33 ) ( -159 -384 32 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( -160 -384 32 ) ( -159 -384 32 ) ( -160 -383 32 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ( 256 -320 288 ) ( 256 -319 288 ) ( 257 -320 288 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 @@ -27,7 +27,7 @@ } // brush 2 { -( -768 304 32 ) ( -768 305 32 ) ( -768 304 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1280 304 32 ) ( -1280 305 32 ) ( -1280 304 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( -160 304 32 ) ( -160 304 33 ) ( -159 304 32 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( -160 304 32 ) ( -159 304 32 ) ( -160 305 32 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ( 256 368 288 ) ( 256 369 288 ) ( 257 368 288 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 @@ -45,7 +45,7 @@ } // brush 4 { -( -768 -256 288 ) ( -768 -255 288 ) ( -768 -256 289 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1280 -256 288 ) ( -1280 -255 288 ) ( -1280 -256 289 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 80 -320 288 ) ( 80 -320 289 ) ( 81 -320 288 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 80 -256 288 ) ( 81 -256 288 ) ( 80 -255 288 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 ( 496 -32 304 ) ( 496 -31 304 ) ( 497 -32 304 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 @@ -72,12 +72,12 @@ } // brush 7 { -( -800 240 32 ) ( -800 241 32 ) ( -800 240 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 -( -1424 -320 32 ) ( -1424 -320 33 ) ( -1423 -320 32 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 -( -1424 240 32 ) ( -1423 240 32 ) ( -1424 241 32 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 -( -1008 304 288 ) ( -1008 305 288 ) ( -1007 304 288 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 -( -1008 320 48 ) ( -1007 320 48 ) ( -1008 320 49 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 -( -768 304 48 ) ( -768 304 49 ) ( -768 305 48 ) e1u1/floor1_1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1312 240 32 ) ( -1312 241 32 ) ( -1312 240 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1936 -320 32 ) ( -1936 -320 33 ) ( -1935 -320 32 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1936 240 32 ) ( -1935 240 32 ) ( -1936 241 32 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( -1520 304 288 ) ( -1520 305 288 ) ( -1519 304 288 ) e1u1/floor1_1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( -1520 320 48 ) ( -1519 320 48 ) ( -1520 320 49 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1280 304 48 ) ( -1280 304 49 ) ( -1280 305 48 ) e1u1/floor1_1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 } // brush 8 { @@ -106,6 +106,69 @@ ( -256 -64 40 ) ( -255 -64 40 ) ( -256 -64 41 ) e1u1/floor1_1 [ 1.0000000000000002 0 0 0 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 ( -256 -64 40 ) ( -256 -64 41 ) ( -256 -63 40 ) e1u1/floor1_1 [ 0 0 1.0000000000000002 32 ] [ 0 -1.0000000000000002 0 0 ] 0 1 1 } +// brush 11 +{ +( -768 240 32 ) ( -768 241 32 ) ( -768 240 33 ) e1u1/floor1_1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1392 -320 32 ) ( -1392 -320 33 ) ( -1391 -320 32 ) e1u1/floor1_1 [ 1 0 0 32 ] [ 0 0 -1 0 ] 0 1 1 +( -1392 240 32 ) ( -1391 240 32 ) ( -1392 241 32 ) e1u1/floor1_1 [ -1 0 0 -32 ] [ 0 -1 0 0 ] 0 1 1 +( -976 304 288 ) ( -976 305 288 ) ( -975 304 288 ) e1u1/floor1_1 [ 1 0 0 32 ] [ 0 -1 0 0 ] 0 1 1 +( -976 32 48 ) ( -975 32 48 ) ( -976 32 49 ) e1u1/floor1_1 [ -1 0 0 -32 ] [ 0 0 -1 0 ] 0 1 1 +( -736 304 48 ) ( -736 304 49 ) ( -736 305 48 ) e1u1/floor1_1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +} +// brush 12 +{ +( -1184 -144 64 ) ( -1184 -144 63 ) ( -1184 -143 64 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 -48 ] [ 0 -1 -6.123233995736766e-17 -48 ] 270 1 1 +( -992 -176 64 ) ( -991 -176 64 ) ( -992 -176 63 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 -48 ] [ -1.0000000000000002 0 0 -32 ] 0 1 1 +( -944 -128 32 ) ( -943 -128 32 ) ( -944 -127 32 ) e1u1/floor1_1 [ 1.0000000000000002 0 0 48 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -992 -144 64 ) ( -992 -143 64 ) ( -991 -144 64 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 -48 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -944 -128 32 ) ( -944 -128 31 ) ( -943 -128 32 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 -48 ] [ 1.0000000000000002 0 0 16 ] 0 1 1 +( -896 -128 32 ) ( -896 -127 32 ) ( -896 -128 31 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 -48 ] [ 0 -1 -6.123233995736766e-17 -48 ] 90 1 1 +} +// brush 13 +{ +( -1184 -144 256 ) ( -1184 -144 255 ) ( -1184 -143 256 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 16 ] [ 0 -1 -6.123233995736766e-17 -48 ] 270 1 1 +( -992 -176 256 ) ( -991 -176 256 ) ( -992 -176 255 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 16 ] [ -1.0000000000000002 0 0 -32 ] 0 1 1 +( -944 -128 224 ) ( -943 -128 224 ) ( -944 -127 224 ) e1u1/floor1_1 [ 1.0000000000000002 0 0 48 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -992 -144 256 ) ( -992 -143 256 ) ( -991 -144 256 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 -48 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -944 -128 224 ) ( -944 -128 223 ) ( -943 -128 224 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 16 ] [ 1.0000000000000002 0 0 16 ] 0 1 1 +( -896 -128 224 ) ( -896 -127 224 ) ( -896 -128 223 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 16 ] [ 0 -1 -6.123233995736766e-17 -48 ] 90 1 1 +} +// brush 14 +{ +( -912 -144 224 ) ( -912 -144 223 ) ( -912 -143 224 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 -16 ] [ 0 -1 -6.123233995736766e-17 -48 ] 270 1 1 +( -992 -176 224 ) ( -991 -176 224 ) ( -992 -176 223 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 -16 ] [ -1.0000000000000002 0 0 -32 ] 0 1 1 +( -944 -128 64 ) ( -943 -128 64 ) ( -944 -127 64 ) e1u1/floor1_1 [ 1.0000000000000002 0 0 48 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -992 -144 224 ) ( -992 -143 224 ) ( -991 -144 224 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 -48 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -944 -128 192 ) ( -944 -128 191 ) ( -943 -128 192 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 -16 ] [ 1.0000000000000002 0 0 16 ] 0 1 1 +( -896 -128 192 ) ( -896 -127 192 ) ( -896 -128 191 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 -16 ] [ 0 -1 -6.123233995736766e-17 -48 ] 90 1 1 +} +// brush 15 +{ +( -1184 -144 224 ) ( -1184 -144 223 ) ( -1184 -143 224 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 -16 ] [ 0 -1 -6.123233995736766e-17 -48 ] 270 1 1 +( -1264 -176 224 ) ( -1263 -176 224 ) ( -1264 -176 223 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 -16 ] [ -1.0000000000000002 0 0 16 ] 0 1 1 +( -1216 -128 64 ) ( -1215 -128 64 ) ( -1216 -127 64 ) e1u1/floor1_1 [ 1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -1264 -144 224 ) ( -1264 -143 224 ) ( -1263 -144 224 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -48 ] 0 1 1 +( -1216 -128 192 ) ( -1216 -128 191 ) ( -1215 -128 192 ) e1u1/floor1_1 [ 0 -6.123233995736767e-17 1.0000000000000002 -16 ] [ 1.0000000000000002 0 0 -32 ] 0 1 1 +( -1168 -128 192 ) ( -1168 -127 192 ) ( -1168 -128 191 ) e1u1/floor1_1 [ 0 -6.123233995736766e-17 1 -16 ] [ 0 -1 -6.123233995736766e-17 -48 ] 90 1 1 +} +// brush 16 +{ +( -992 -320 80 ) ( -992 -319 80 ) ( -992 -320 81 ) e1u1/floor1_1 [ 0 1.0000000000000002 0 48 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1 +( -1008 -320 80 ) ( -1008 -320 81 ) ( -1007 -320 80 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -1008 -320 80 ) ( -1007 -320 80 ) ( -1008 -319 80 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 0 ] [ 0 1.0000000000000002 0 48 ] 0 1 1 +( -960 -304 96 ) ( -960 -303 96 ) ( -959 -304 96 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 0 -32 ] 0 1 1 +( -960 -316 96 ) ( -959 -316 96 ) ( -960 -316 97 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -960 -304 96 ) ( -960 -304 97 ) ( -960 -303 96 ) e1u1/floor1_1 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 0 ] 0 1 1 +} +// brush 17 +{ +( -992 -320 176 ) ( -992 -319 176 ) ( -992 -320 177 ) e1u1/floor1_1 [ 0 1.0000000000000002 0 48 ] [ 0 0 -1.0000000000000002 32 ] 0 1 1 +( -1008 -320 176 ) ( -1008 -320 177 ) ( -1007 -320 176 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -1008 -320 176 ) ( -1007 -320 176 ) ( -1008 -319 176 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 0 ] [ 0 1.0000000000000002 0 48 ] 0 1 1 +( -960 -304 192 ) ( -960 -303 192 ) ( -959 -304 192 ) e1u1/floor1_1 [ -1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 0 -32 ] 0 1 1 +( -960 -316 192 ) ( -959 -316 192 ) ( -960 -316 193 ) e1u1/floor1_1 [ -1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -960 -304 192 ) ( -960 -304 193 ) ( -960 -303 192 ) e1u1/floor1_1 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 32 ] 0 1 1 +} } // entity 1 { @@ -165,3 +228,26 @@ ( -512 48 184 ) ( -512 48 185 ) ( -512 49 184 ) e1u1/skip [ 0 -1 0 0 ] [ 0 0 -1 16 ] 0 1 1 32 128 0 } } +// entity 7 +{ +"classname" "light_mine1" +"origin" "-1048 -48 128" +"light" "150" +"delay" "3" +"_anglesense" "0" +"angle" "-90" +} +// entity 8 +{ +"classname" "func_detail_fence" +"_mirrorinside" "1" +// brush 0 +{ +( -1168 -184 224 ) ( -1168 -184 223 ) ( -1168 -183 224 ) e1u1/skip [ 0 6.123233995736767e-17 -1.0000000000000002 0 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -24 ] 270 1 1 0 128 0 +( -1112 -144 224 ) ( -1111 -144 224 ) ( -1112 -144 223 ) e1u1/skip [ 1.0000000000000002 0 0 -8 ] [ 0 6.123233995736767e-17 -1.0000000000000002 12 ] 0 -8 4 0 128 0 +( -800 -176 64 ) ( -799 -176 64 ) ( -800 -175 64 ) e1u1/skip [ 1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -24 ] 0 1 1 0 128 0 +( -1112 -184 224 ) ( -1112 -183 224 ) ( -1111 -184 224 ) e1u1/skip [ 1.0000000000000002 0 0 0 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -24 ] 0 1 1 0 128 0 +( -800 -128 0 ) ( -800 -128 -1 ) ( -799 -128 0 ) e1u1/alphamask [ 1 0 0 26.962677 ] [ 0 0 -1 16.67809 ] 0 -3.981884 3.8373702 0 33554432 0 +( -912 -176 0 ) ( -912 -175 0 ) ( -912 -176 -1 ) e1u1/skip [ 0 -6.123233995736767e-17 1.0000000000000002 0 ] [ 0 -1.0000000000000002 -6.123233995736767e-17 -24 ] 90 1 1 0 128 0 +} +} diff --git a/testmaps/q2_wal_metadata/textures/e1u1/alphamask.wal b/testmaps/q2_wal_metadata/textures/e1u1/alphamask.wal new file mode 100644 index 0000000000000000000000000000000000000000..8c432ad8ee943253e9ca2a0793bbdbaa8ba81aa7 GIT binary patch literal 5540 zcmeHKNe;p=4CK-~2lx+PL4prJC7usXJT`XPD3n$dfg?rscugjuEw^KTzVzp7zZo9~ zGN*Y;b4znab5CHx=vE(hKf2Cg4?UtlTD=QT7H9C#quDtmcgrJSds@BLe{TNV_5W9X$#&qs zVE`9hg#W=8uam+V?;p7(nLPkzQat&=r+^h3J+v&7&sF06Bh*{Yt={Ax1#FJhYxy~* z{2Uvp75N|~L@*Ex1Os2j0G{I_@b6mxWUC_2dzNZerRL9{RJ7-(9|VwrHCCSfq;bM` z__5xV1b7hv9)-@kDhQbDkMmjSU_aAV?oCb7ebFnF^d@dByVghS&HCkf8vR;s>HDfI G>pcJmgSILF literal 0 HcmV?d00001 diff --git a/tests/test_ltface.cc b/tests/test_ltface.cc index 225a4c93..bafff066 100644 --- a/tests/test_ltface.cc +++ b/tests/test_ltface.cc @@ -274,6 +274,24 @@ TEST_CASE("q2_light_translucency") { CHECK(sample == qvec3b(0, 150, 0)); }); } + + { + INFO("alpha test works"); + + auto *in_light = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], {-976, -316, 184}); + REQUIRE(in_light); + + CheckFaceLuxels(bsp, *in_light, [](qvec3b sample) { + CHECK(sample == qvec3b(150)); + }); + + auto *in_shadow = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], {-976, -316, 88}); + REQUIRE(in_shadow); + + CheckFaceLuxels(bsp, *in_shadow, [](qvec3b sample) { + CHECK(sample == qvec3b(0)); + }); + } } TEST_CASE("-visapprox vis with opaque liquids") {