Eric Wasylishen
7a014819f0
qbsp: keep bspbrushes around if -debugbspbrushes is used
2022-09-27 09:55:02 -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
4567f9b4b9
qbsp: add -debugleak for saving more info about leaks
2022-09-11 23:56:29 -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
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
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
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
057ae544c4
use references in places where we know it's non-null
2022-08-19 12:11:35 -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
40b04b9518
use alloca instead of thread-local static
2022-08-13 20:30:51 -04:00
Jonathan
2059835a47
use a more optimized version of SplitBrush for CheckPlaneAgainstVolume that doesn't require allocating/freeing a lot of memory
2022-08-13 06:39:30 -04:00
Eric Wasylishen
06a116670b
winding_t: make non-copyable
2022-08-12 02:06:23 -06:00
Jonathan
ea38e5eeb7
fix missing move
...
fix clip_back causing extra copies
2022-08-12 02:03:00 -04:00
Jonathan
bf162c7a86
allow explicit calling of percent_clock so it can be simplified a bit
...
add more timers in a few spots
by default, display percent timers but don't display elapsed for non-verbose stuff (bmodels); this is so it still shows that it's "working" instead of just showing blank for large maps, give user an idea on progress for certain stuff
merge all "side not found"s into a single line
time `FillOutside`
time `ProcessMapBrushes`
time `Brush_LoadEntity`
2022-08-12 01:30:04 -04:00
Jonathan
4bf2ab338c
allowing logging::percent to handle indeterminate values
...
fix logging::percent getting stomped in multi-threaded operations
add new stats facility to make creating lists of single-use stats easier to manage
fix SplitBrush storing a bunch of extra stats for ChopBrushes
2022-08-11 20:33:12 -04:00
Jonathan
f851fac655
speed up compilation - we don't need to make a copy of node->volume going into SplitBrush now
2022-08-11 02:58:49 -04:00
Jonathan
f17ce185f6
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-08-11 00:27:36 -04:00
Jonathan
0db1e0fc01
add chop control to settings
...
only chop if desired or if hull is -1 or > 0 since those can be chopped without affecting visuals
farewell, shared_lock
fix brush contents issue
2022-08-11 00:27:28 -04:00
Eric Wasylishen
1f3bf6edbc
qbsp: log BrushBSP function name
2022-08-10 21:45:08 -06:00
Jonathan
129dedb268
reset onnode between BrushBSP passes
2022-08-10 23:28:16 -04:00
Jonathan
4b4a1738fd
more partial revert
2022-08-10 23:06:37 -04:00
Jonathan
02e80645e6
partial revert of 097b564cc6
2022-08-10 22:43:42 -04:00
Jonathan
eb7c65362c
fix typo
...
assume non-sourced sides are non-visible
2022-08-10 22:27:40 -04:00
Jonathan
6ab037b03a
implement ChopBrushes
2022-08-10 22:12:23 -04:00
Jonathan
097b564cc6
remove bspbrush_t::original; it is no longer required since mapbrush_t is what the output is being written to
...
use some explicit types (bspbrush_t::ptr for pointer, bspbrush_t::container for container of pointers, and bspbrush_t::make_ptr to create one) so that we can swap it out with different pointers easier later
swap out bspbrush_t::ptr from unique_ptr to shared_ptr; it's not important yet, but it does not increase compilation time and will allow us to pass things to functions like SplitBrush without destroying the original as long as we still have a reference to it somewhere (important for ChopBrushes)
add get_positive_plane to mapface_t
instead of creating a whole copy of the bspbrush_t list, BrushBSP now just creates copies of the shared_ptrs which are then filtered down the tree; the originals are never modified by SplitBrushList and friends, only split into new brushes, so this is safe from what I can tell
portals now directly reference the mapface_ts
original_brushes now directly reference the mapbrush_ts
early exit in `BrushBSP` if brush list is empty (moved to top)
2022-08-10 16:02:16 -04:00
Jonathan
faf9173f10
remove file_order; we can infer this from the pointers now
...
remove unnecessary early microbrush check, use microbrush option value on later one
2022-08-10 02:22:32 -04:00
Jonathan
bca6bda7c3
move `visible` to mapface_t since we only need to store one boolean for it
2022-08-10 01:29:34 -04:00
Jonathan
f8f0e903a2
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-08-10 01:14:59 -04:00
Eric Wasylishen
c9a1d9f096
qbsp: don't store leafnode->volume once the leaf is created
2022-08-09 23:14:20 -06:00
Jonathan
70f015a36c
move func_areaportal and lmshift from bspbrush_t to mapbrush_t
2022-08-10 00:48:55 -04:00
Jonathan
697e3325f8
go back to vector for brush lists
2022-08-09 16:00:51 -04:00
Eric Wasylishen
67a376ad18
qbsp: BuildTree_r: avoid copying node->volume
2022-08-09 00:51:18 -06:00
Eric Wasylishen
30b529b70f
qbsp: keep a pool of node_t's in tree_t in a tbb::concurrent_vector
...
rather than using std::unique_ptr recursively in nodes
2022-08-08 23:43:36 -06:00
Jonathan
189f70ca30
add in-place versions of union and expand to help with inlining
2022-08-08 22:43:10 -04:00
Jonathan
5b56ecfb28
remove extraneous warnings when they don't matter
2022-08-08 16:01:16 -04:00
Jonathan
b3fbf8841d
allow update_bounds to tell the caller that a brush may have been destroyed
2022-08-08 15:50:23 -04:00
Jonathan
a9b1fa2461
speed up SplitBrush a tiny bit by reserving side count
2022-08-08 01:29:56 -04:00
Jonathan
2abdeb2616
remove Face_Plane since we can directly access the real plane now
...
speed up CreateBrushWindings slightly since we know where the inverted plane is stored
2022-08-08 01:06:50 -04:00
Jonathan
d2cfc0d025
use planenum in SplitBrush and friends
2022-08-08 01:01:49 -04:00