Commit Graph

1635 Commits

Author SHA1 Message Date
Eric Wasylishen 8d368060eb qbsp: sealing: in hull1/2 treat onnode point entities as being in empty space 2023-04-07 17:06:56 -06:00
Jonathan 00bcead0fb Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2023-04-03 05:26:49 -04:00
Jonathan a0e98242a4 fix hintskip; when loading a hint brush, mark all other sides as hintskip 2023-04-03 05:26:41 -04:00
Eric Wasylishen 68eaf37e40 qbsp: q1: fix detail to be non-sealing again 2023-03-27 21:43:54 -06:00
Eric Wasylishen 8830a949e6 qbsp: only print "doesn't touch two areas" once per entity
log source location as well
2023-03-27 20:15:19 -06:00
Eric Wasylishen 2a2bc5d966 qbsp: clean up debug spam from DebugAreaPortalBothSidesLeak 2023-03-27 20:09:01 -06:00
Eric Wasylishen 4569ab1b33 qbsp: delete leftover areaportal leak files on startup 2023-03-27 20:05:33 -06:00
Jonathan d067630bc1 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2023-03-27 03:23:19 -04:00
Eric Wasylishen d7db2bdae5 qbsp: debug helper for finding areaportal leaks 2023-03-27 01:20:53 -06:00
Eric Wasylishen f12cefb2c9 qbsp: if Q2_CONTENTS_SOLID bit is set, always assign invalid area 2023-03-26 19:02:25 -06:00
Jonathan 0bab917dc4 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2023-03-26 20:24:51 -04:00
Eric Wasylishen 759811b548 qbsp: fix Portal_EntityFlood check 2023-03-26 18:04:06 -06:00
Jonathan 1dcfe58563 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2023-03-26 18:29:41 -04:00
Jonathan 5daaeee6fb allow `surflight_minlight_scale` to be specified per brush 2023-03-26 18:29:37 -04:00
Eric Wasylishen 6e064ae3c7 qbsp: restore detail to non-sealing 2023-03-26 16:20:10 -06:00
Eric Wasylishen 3c408f5d30 qbsp: better debug visualization for "missing portal sides" warning
writes a .missing_portal_sides.prt file for inspection in TB
2023-03-26 14:09:54 -06:00
Eric Wasylishen 7b7cabaf09 qbsp: don't merge above- and below- water faces in Q1 mode
works around caustics effects in ezQuake/nQuake leaking onto above-water faces.
2023-03-13 23:50:32 -06:00
Eric Wasylishen 41a4375376 qbsp: q2: reject DEADMONSTER and MONSTER in input brushes
we currently (hackily) use MONSTER as detail_wall internally (this will likely change later though.)

In any case these are invalid in input maps.
2023-03-12 23:39:25 -06:00
Eric Wasylishen 7ed36c9bec qbsp: reject Q2 maps with mixed visible contents 2023-03-07 22:12:22 -07:00
Jonathan 1091183293 fix infinite loop if a texture is missing in the animation chain 2023-03-03 16:48:25 -05:00
Eric Wasylishen 06f2363902 qbsp: work around 45 degree plane issue in FindPortalSide 2023-03-01 21:09:15 -07:00
Eric Wasylishen 8130843fb3 qbsp: search for wad's relative to cwd 2023-02-26 23:27:38 -07:00
Eric Wasylishen ac3937300b qbsp: safer condition in last commit 2023-02-23 19:15:07 -07:00
Eric Wasylishen ce030f53be qbsp: fix func_detail_wall deleting merged faces 2023-02-23 19:08:35 -07:00
Eric Wasylishen 1c22f45b47 qbsp: avoid tjunc interaction between func_detail_wall and worldspawn 2023-02-22 23:12:40 -07:00
Eric Wasylishen 42da494707 qbsp: face_t: track front/back contents, instead of just front 2023-02-22 22:54:37 -07:00
Eric Wasylishen d8b903823a qbsp: create a tjunc.hh header
make some tjunc.cc functions static that weren't
2023-02-22 18:07:49 -07:00
Eric Wasylishen 096f347a12 qbsp: fix func_detail_fence/func_detail_wall with DETAIL set on brushes 2023-02-22 01:16:32 -07:00
Eric Wasylishen 60dea4af4c qbsp: fix func_detail_wall in q2 mode 2023-02-22 00:57:31 -07:00
Eric Wasylishen b17633f746 cleanup: set PackConstructorInitializers: Never 2023-02-20 10:23:59 -07:00
Eric Wasylishen dd6e49c89f light: support _object_channel_mask on func_group 2023-02-20 00:07:08 -07:00
Eric Wasylishen eda6155844 cleanup: run ./clang-format-all.sh
clang-format version 15.0.7
2023-02-18 22:59:43 -07:00
Eric Wasylishen 7d6ed20dc1 unused includes cleanup 2023-02-18 16:14:11 -07:00
Eric Wasylishen 641fb780ac light: allow customizing _world_units_per_luxel on func_group etc. 2023-02-17 00:07:43 -07:00
Jonathan 72a0a92d3a fix area assertion/test failure 2023-02-13 20:41:11 -05:00
Jonathan dd75cdf3e3 don't bother with area portal flooding if we are leaked 2023-02-13 20:18:09 -05:00
Eric Wasylishen 48fe527955 light: add _lightgrid_hint point entity key for customizing lightgrid bounds
use it as a info_null key: "_lightgrid_hint" "1"
2023-02-12 15:03:08 -07:00
Jonathan c954953735 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2023-02-12 08:10:59 -05:00
Jonathan 4c7459e673 fix the condition for Q2 phong warning 2023-02-12 08:10:52 -05:00
Eric Wasylishen 85ba6ca205 qbsp: fix "unsigned marksurfaces" warning printing wrongly after auto upgrade 2023-02-11 22:30:49 -07:00
Eric Wasylishen 71a0ce77ac qbsp: q2: set leaf 0's cluster to -1
leaf 0 is the invalid placeholder leaf, but we were giving it
cluster 0 which is valid. instead, give it cluster -1
2023-02-07 23:17:55 -07:00
Jonathan c2acae8c6b fix hint brushes 2023-02-06 21:58:53 -05:00
Eric Wasylishen c649fc2544 qbsp: add a warning message when the .bsp requires "extended limits" (unsigned marksurfaces) 2023-02-04 14:11:01 -07:00
Eric Wasylishen 302d600f4c qbsp: strip _tb_ keys, convert __TB_empty to skip 2023-01-30 00:28:31 -07:00
Jonathan 36b8b21990 set -wrnormals by default on -q2rtx
inherit -phong from worldspawn
2023-01-18 15:49:51 -05:00
Eric Wasylishen 1fb53cbe4d qbsp: fix area assignment on leaking q2 maps
reverts c9243d4fea
2022-12-21 21:18:06 -07:00
Eric Wasylishen 35fe26b7a6 qbsp: fix FindTargetEntity (was breaking hiprotate) 2022-12-19 00:55:20 -07:00
Jonathan d5e29a1c90 add _nofill key, which causes an entity to not count as an entity for the purposes of occupancy (for lights in walls, etc)
add _nonudge key, to disabling nudging of lights "stuck" inside walls
2022-12-15 04:30:22 -05:00
Eric Wasylishen 82aa1e4396 light: make "_light_alpha 0" behave as expected (invisible to light) 2022-12-14 21:46:36 -07:00
Eric Wasylishen e7b20733d3 qbsp: write .prt files in text mode for TB compatibility 2022-12-09 22:54:56 -07:00
Eric Wasylishen 3e673d2119 qbsp/light: restore TRANS33/TRANS66 faces casting translucent shadows by default 2022-12-06 23:38:43 -07:00
Eric Wasylishen 7ce14a376f qbsp/light: make liquids not cast shadows by default
previously opaque Q2 liquids (e.g. lava, opaque water) were casting shadows / dirt
2022-12-06 17:03:39 -07:00
Jonathan 15b9a78fd1 fix gate being incorrect
add surflight grouping
fix minlight on color'd _surface lights
2022-12-05 20:35:44 -05:00
Eric Wasylishen 41de747a9a qbsp: for "Q2 phong (value set, LIGHT unset) used on a mirrored face." warning, don't set value to 0
- setting value to 0 was not a robust way to disable phong
- it could actually have the reverse effect if "value 1" was
  being used to change a smoothing group, setting value back to 0
  could reintroduce unwanted smoothing
- that hack should be less useful with the phong system improvements
  in the previous commits
2022-12-01 01:23:28 -07:00
Eric Wasylishen f66e4790a4 qbsp/light: add no_phong texinfo flag (currently not used/exposed) 2022-12-01 01:16:17 -07:00
Eric Wasylishen 1065adecc6 qbsp/light: implement _phong_group key, equivalent to Q2 "value" field 2022-12-01 00:25:05 -07:00
Eric Wasylishen abb92d4b0f qbsp: fix crash when using -omitdetail and an all-detail bmodel 2022-11-21 01:13:31 -07:00
Eric Wasylishen 04adb17b1b qbsp: fix -nodetail in q2 mode 2022-11-21 00:10:26 -07:00
Eric Wasylishen 12d82db8b1 qbsp: implement -omitdetail for q2 2022-11-20 23:58:30 -07:00
Eric Wasylishen efac0c5a31 qbsp: make -noallowupgrade also disallow the extended-limits (int16_t -> uint16_t) subformats 2022-11-20 12:13:06 -07:00
Eric Wasylishen c9111b2a6c
Merge pull request #337 from TTimo/colorcodes
Enable support for ANSI color codes on Windows 10 and newer, without …
2022-11-19 09:10:24 -08:00
Eric Wasylishen 9ab4ea8176 Move SetConsoleMode() call to logging::preinitialize(); helper
Don't do ENABLE_VIRTUAL_TERMINAL_INPUT as it breaks arrow key history
navigation in Windows Terminal after running one of the ericw-tools exe's.
2022-11-19 10:05:14 -07:00
Eric Wasylishen 9c3a807391 qbsp: warn and disable q2-style phong if used on a mirrored face 2022-11-17 23:51:00 -07:00
Jonathan 328fa6ade6 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-11-17 13:55:37 -05:00
Jonathan 670347e64e fix infinite loop if map has uppercase animated textures 2022-11-17 13:55:31 -05:00
ttimo fb459253fe Enable support for ANSI color codes on Windows 10 and newer, without needing to enable system wide. Good for CreateProcess CREATE_NEW_CONSOLE situations. 2022-11-15 11:09:19 -06:00
Eric Wasylishen 959fe32e18 portals.cc: add -verbose logging for missing portal sides 2022-11-14 21:49:01 -07:00
Eric Wasylishen d7acd046c3 light/qbsp: add _surflight_rescale key 2022-11-12 17:07:02 -07:00
Eric Wasylishen b81b52da5a qbsp: fix nonsolid bmodels in hul1/2 2022-11-11 15:04:53 -07:00
Eric Wasylishen 93d059058f testqbsp: fix mirrorinside + bmodels in Q1 mode 2022-11-11 12:33:47 -07:00
Jonathan 8b524cf324 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-11-02 17:59:12 -04:00
Jonathan b89b71455b fix condition running in Q2 mode that isn't supported yet 2022-11-02 17:59:07 -04:00
Eric Wasylishen 2bd2515792 all: cleanup unused includes (Clion - detect not directly used) 2022-10-31 21:37:34 -06:00
Eric Wasylishen 0924423c20 light: header -> source move 2022-10-31 21:21:28 -06:00
Eric Wasylishen 35ffc00462 all: add LIGHT_/QBSP_/VIS_ prefixes to epsilons where necessary 2022-10-30 15:08:10 -06:00
Jonathan 5ea786702b always include NODRAW + LIGHT 2022-10-30 15:29:42 -04:00
Eric Wasylishen 34f32f851c common, qbsp: more functions moved from header -> source 2022-10-26 23:29:54 -06:00
Eric Wasylishen ba3befca9b qbsp: exportobj: re-add bspbrush_t::container version 2022-10-23 19:20:19 -06:00
Eric Wasylishen 9ff0752ad1 testqbsp: clean up clearing of data between tests 2022-10-23 19:20:19 -06:00
Eric Wasylishen a950d2fcb7 qbsp: add exportobj.hh header 2022-10-23 19:20:19 -06:00
Eric Wasylishen 87ae7d63fa qbsp: restore a variation on CSGFaces 2022-10-23 19:20:10 -06:00
Eric Wasylishen 501ced4bfe qbsp: restore func_detail_wall support 2022-10-21 18:33:38 -06:00
Eric Wasylishen 636b376577 squash brushbsp-compilation-speedup branch
move function implementations out of headers
2022-10-21 18:00:58 -06:00
Eric Wasylishen 2a9393cc54 bspbrush_t: add contains_point() query 2022-10-05 23:49:34 -06:00
Jonathan f51ab9b75e Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-09-30 18:30:50 -04:00
Jonathan 09447178f5 error on -onlyents in Q2 mode 2022-09-30 18:30:46 -04:00
Eric Wasylishen 1160352a24 qbsp: make -debugleafvolumes only write out solid leafs 2022-09-28 19:23:57 -06:00
Eric Wasylishen 7a014819f0 qbsp: keep bspbrushes around if -debugbspbrushes is used 2022-09-27 09:55:02 -06:00
Eric Wasylishen 8d5d3233b7 qbsp: call CountLeafs at the end of hull processing 2022-09-19 21:00:36 -06:00
Eric Wasylishen ed4e4d1327 qbsp: use tree_split_t::PRECISE on second BrushBSP for hulls 2022-09-18 18:05:28 -06:00
Eric Wasylishen acf334daee cleanup: rename surfflags_t::is_skip to is_nodraw
This is a break to the .json format
2022-09-18 15:47:14 -06:00
Eric Wasylishen 09f0e2a0c5 qbsp: preserve brush side texinfo in collision hulls
17k -> 9.8k clipnodes on testmaps\retrojam1_ericw.map

setting the texinfo to 0 was defeating the bsp heuristic, because
texinfo 0 was marked as is_skip, which makes side_t::is_visible()
return false (which makes us not care about splitting those brush sides)
2022-09-17 21:46:02 -06:00
Eric Wasylishen 04df42f8e0 qbsp: CreateSingleHull: remove unnecessary side.visible clearing (now done in CreateBrushWindings) 2022-09-17 21:00:01 -06:00
Eric Wasylishen cea123f955 qbsp: Brush_LoadEntity: print source brush side stats (visible/invisible) 2022-09-17 20:27:21 -06:00
Eric Wasylishen 8ee39cf874 qbsp: CountLeafs: also measure avg/max bsp height 2022-09-17 19:53:49 -06:00
Eric Wasylishen 9c46699b60 qbsp: experiment with fixing micro-leaks 2022-09-12 02:10:04 -06:00
Eric Wasylishen b17fc3eab1 qbsp: address missing "faceCopy.tested = false" 2022-09-12 00:56:10 -06:00
Eric Wasylishen c90c16ee45 qbsp: add -debugleafvolumes 2022-09-12 00:36:33 -06:00
Eric Wasylishen a926e5c397 qbsp: add -debugbspbrushes 2022-09-12 00:18:32 -06:00
Eric Wasylishen 4567f9b4b9 qbsp: add -debugleak for saving more info about leaks 2022-09-11 23:56:29 -06:00
Eric Wasylishen ae37a4e667 qbsp: write .leak.prt files in addition to .pts to aid leak debugging 2022-09-11 20:35:51 -06:00
Jonathan 6713fedcbc allow changing a brushes' lightmap color scale with `lightcolorscale` 2022-09-10 19:04:17 -04:00
Eric Wasylishen 68e2f97fbf qbsp: sync FindAreas to Quake-2-Tools version
fixes area portals in cases when area has no point entities in it
2022-09-10 15:49:17 -06:00
Eric Wasylishen b19527c3fd qbsp: don't use brush sides to texture a portal if they're not coplanar 2022-09-08 21:20:49 -06:00
Jonathan d4dde8350c always mark leaked maps' nodes/leaves areas 2022-09-06 14:44:44 -04:00
Jonathan b77dfbc7f9 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-31 12:58:56 -04:00
Jonathan 075481a36f add -nocolor for TB, etc
fix crashes on vis and light for invalid options
fix TB and others not receiving output
2022-08-31 12:58:04 -04:00
Eric Wasylishen 88a88882a9 qbsp: initialize 'visible' in CreateBrushWindings 2022-08-28 23:15:49 -06:00
Eric Wasylishen 3856dffc0a qbsp: compilation speedup: isolate pareto in map.cc 2022-08-28 18:10:01 -06:00
Eric Wasylishen c8c526ab57 qbsp: fix mist-clip intersection chopping up the faces
note it makes the simple_worldspawn_detail clipnodes count
test fail. Clipnode counts are way too high in general so this isn't
a huge issue yet.
2022-08-28 14:13:14 -06:00
Eric Wasylishen 7df6310d32 qbsp: init brush sides to visible
improves the quality of the first BSP build
2022-08-27 23:36:58 -06:00
Eric Wasylishen 1ab6cc1e65 qbsp: fix iterator debug assertion in ChopBrushes
"cannot decrement begin list iterator"
2022-08-27 14:54:36 -06:00
Jonathan 34a7079b64 reverse the portals for leak lines in inside filling 2022-08-27 03:28:57 -04:00
Jonathan b305ddaed9 port over the visible = true setting for hint sides 2022-08-25 21:45:33 -04:00
Jonathan f27f16cebf fix cherry pick error 2022-08-25 15:48:52 -04:00
Jonathan 5fb0d56da7 maxlight
# Conflicts:
#	include/common/bspfile.hh
2022-08-24 21:50:11 -04:00
Jonathan 1ce5c5a7b1 combine flood + emit areaportals into a single step, since they won't ever be run not together
add stats for edges and faces
2022-08-24 12:02:56 -04:00
Jonathan e14f42caba emit edges and faces together instead of in two passes 2022-08-22 13:40:47 -04:00
Jonathan e7ae158a10 split up BrushBSP and CountLeafs stat prints 2022-08-21 21:54:16 -04:00
Jonathan 4eebbd0bdd re-introduce qbsp3's "don't use clip brush sides as splitters" 2022-08-21 17:36:19 -04:00
Jonathan fe41b1ae1b fix format error for Q1 contents
re-introduce chop since it may be a key to the puzzle for hullnums
allow caller to do full fragmentation, add option to force it
fix BrushGE causing liquids, etc to be cut up
2022-08-21 16:16:09 -04:00
Jonathan 2d8827e031 Revert "Q3 didn't need chop, we don't either!"
This reverts commit f57ecaf599.

# Conflicts:
#	include/qbsp/brushbsp.hh
2022-08-21 15:04:26 -04:00
Jonathan 282c5ec69f stat printing adjustments 2022-08-21 15:01:45 -04:00
Jonathan 1aaa513368 collapse certain map face issues into loggable warning stats to lessen maps spamming warnings on things that legacy compilers allow
adjust the wording of certain warning messages
don't display face crunching on bmodels/hulls by default
2022-08-20 20:13:27 -04:00
Jonathan 7fad0019c2 set omit properly 2022-08-20 15:09:47 -04:00
Jonathan 7422776f38 move _omitbrushes to the loading phase; this will greatly improve performance of loading a map with a ton of brushes that has most of them omitted. 2022-08-20 09:53:23 -04:00
Jonathan bfe56b0663 fix the Q1 bevel code for testing later 2022-08-20 08:19:46 -04:00
Jonathan 39bbd643d5 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-20 08:14:43 -04:00
Jonathan 8a5ad5bc4d simplify Brush_LoadEntity a bit by moving some of the contents setting to mapbrush loading; note that this causes a bit of issue with mirror_inside & clipsametype currently because of Q1 contents code. needs adjusting 2022-08-20 08:14:36 -04:00
Eric Wasylishen 08e3254dae brushbsp: track tree level for debugging 2022-08-20 00:52:24 -06:00
Eric Wasylishen 6b07e0c5f4 brushbsp: return split planes as side_t* for better debuggability 2022-08-20 00:51:52 -06:00
Jonathan e020cd6be6 comment out the hintskip face removal; this seems to break later processes. qbsp3 doesn't do this.. 2022-08-19 16:09:37 -04:00
Jonathan 84870cf366 since tree_t only exists as a type that only allocates heap memory, we don't need to wrap it in a unique_ptr; this also allows the vectors to keep their memory on the next pass, which may improve performance for huge maps
removed tree_t parameter from functions that don't need it
pass reference to tree_t instead of ptr
use an enum instead of std::optional<bool> for the ternary value to store split type, since it's more explicit and obvious now what the three values do
2022-08-19 15:15:53 -04:00
Jonathan 69aad26097 move & document bevel boolean
don't report invalid winding more than once
ceil the extents, so we don't get weird values like "world extents calculated to 5082.29327318318"
2022-08-19 13:46:37 -04:00
Jonathan 057ae544c4 use references in places where we know it's non-null 2022-08-19 12:11:35 -04:00
Jonathan 39475e3213 use on_epsilon instead of 0.1, to match Q1 2022-08-19 09:44:11 -04:00
Jonathan 0c4888d5d1 remove leftover debug code 2022-08-19 09:42:11 -04:00
Jonathan 9596855c62 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp 2022-08-19 07:15:51 -04:00
Jonathan a5557bc87d Revert "remove the Q1 bevel stuff"
This reverts commit f5f80479a3.

# Conflicts:
#	qbsp/map.cc
2022-08-19 07:15:39 -04:00
Eric Wasylishen 6eab754ca3 qbsp: reset onnode at the beginning of BrushBSP 2022-08-18 22:26:33 -06:00
Jonathan f57ecaf599 Q3 didn't need chop, we don't either! 2022-08-18 19:47:34 -04:00
Jonathan 424e3ee110 remove unused portal_t::face, unused
rename and re-type a few things to use twosided
2022-08-17 09:10:58 -04:00
Jonathan 9e764d8035 document some stuff
remove mapface_t::value and mapface_t::flags; they are duplicated by texinfo
add mapface_t::get_texinfo and face_t::get_texinfo so that you can fetch them easier
2022-08-17 07:30:31 -04:00
Jonathan a2d6b63533 Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
# Conflicts:
#	qbsp/brush.cc
#	qbsp/map.cc
2022-08-17 03:50:52 -04:00
Jonathan f5f80479a3 remove the Q1 bevel stuff 2022-08-17 03:49:42 -04:00
Eric Wasylishen fe43928802 fix build (unwanted static on TestExpandBrushes) 2022-08-17 01:18:11 -06:00
Eric Wasylishen a2a7b987bc revert last commit, q1 code is still producing better results with q1_rocks.map 2022-08-17 01:17:19 -06:00
Eric Wasylishen 688a033288 qbsp: switch back to qbsp3 brush bevels in q1 mode
now that the bug in the previous commit is fixed
2022-08-16 23:15:09 -06:00
Eric Wasylishen 6b1720e095 qbsp: fix bug from qbsp3's AddBrushBevels where edge bevels are wrongly rejected
fixes bad result in q1_hull_expansion_lip.map
2022-08-16 23:11:43 -06:00
Jonathan 95c728a5b6 fix legacy bevel bug
pushing up changes for Q1 hulls just in case we ever want these back
2022-08-16 13:52:30 -04:00