Jonathan
24168c8e40
clang pass
2022-08-02 21:57:33 -04:00
Jonathan
5f35575c02
remove map.faces and map.brushes; now, brushes are stored inline in mapentity_t, and faces are stored inline in mapbrush_t
...
calculate brush bounds (and winding) and add bevels after all of the rest of the map has loaded, so that it has proper world extents
calculate world extents right after the map is loaded
2022-08-02 20:59:08 -04:00
Jonathan
9ca28dff61
bevel
2022-08-02 19:48:17 -04:00
Jonathan
e14c2772a6
add ability for winding storages to reserve memory (for clip mainly, so it doesn't need to allocate on each addition; we know the winding will have at least the input number of points)
2022-08-02 18:10:20 -04:00
Jonathan
4c6d952841
plane hashing
2022-08-02 17:44:14 -04:00
Jonathan
a75f4239e3
node_t planenum
2022-08-02 16:04:48 -04:00
Jonathan
46a643c3f0
face_t using planenum
2022-08-02 15:45:06 -04:00
Jonathan
1d729ba573
side_t using planenums
2022-08-02 14:55:38 -04:00
Jonathan
1ad0eb530d
going back to using planenums, but going for the qbsp3-esque system
2022-08-02 14:17:59 -04:00
Jonathan
93655913c0
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
...
# Conflicts:
# include/qbsp/qbsp.hh
2022-08-02 06:24:46 -04:00
Jonathan
dd287f30d4
Merge branch 'brushbsp-midsplit' into brushbsp
2022-08-02 06:09:28 -04:00
Jonathan
53adb9fed5
split winding_base_t into two types, so that we can switch out the backing storage
...
default winding_t for the main polylib to use heap-based, exact-memory-usage-only, winding
2022-08-02 06:09:20 -04:00
Jonathan
8476e2861c
this all matches release now
2022-08-02 04:29:36 -04:00
Eric Wasylishen
e05a2bdf75
qbsp: "-add additional.map" feature
2022-08-01 19:13:10 -06:00
Jonathan
cc9dd986c6
adopt parent node bounds if a leaf is unbounded now too
...
move midsplitbrushes into same group as blocksize
always return a split rather than erroring
list out which method is used of the three
2022-08-01 15:51:57 -04:00
Eric Wasylishen
52dff47a86
fix linux build
2022-08-01 12:47:20 -06:00
Eric Wasylishen
1751733ddc
qbsp: add experimental MidSplit re-implementation, enabled by default
2022-08-01 12:30:04 -06:00
Jonathan
755a9e65ca
use std::set instead of vector for original_brushes since we need them implicitly sorted and no dupes
...
parallelize PruneNodes_R and CalcTreeBounds_r
2022-08-01 13:19:50 -04:00
Jonathan
26a18d5cc3
add logging::header/funcheader to easily and consistently print function or "active routine" headers
...
add OOP percent_clock wrapper to make printing percents easier, not used yet
2022-08-01 09:35:21 -04:00
Eric Wasylishen
aac9513417
qbsp: parallelize MakeTreePortals
2022-07-31 21:39:47 -06:00
Jonathan
e60babdb9c
add q3map2-style -blocksize option, using the same algorithm from it. it's optional and disabled by default.
...
pass through the "use mid split" boolean again
remove node_t::side; appeared to be unused in our current code, and needs to be removed anyways to support the other plane splitters
re-introduce ChooseMidPlaneFromList, but comment it out as it currently fails on a lot of BSPs.
2022-07-30 06:39:14 -04:00
Jonathan
d8fd13d481
use <= gating for brightness for surface and bounce lighting, since these can often be very small values (provides a moderate speed increase as well, counter-balancing the next change)
...
bounce lighting generates a grid of bounces rather than a single light, improving lighting in conditions with larger faces or where the midpoint is blocked by other geometry
2022-07-29 22:26:07 -04:00
Jonathan
85f25bbc78
Q2-specific fix; -1 lightmaps are always fullbright, which can cause actual full-dark areas to be full bright by mistake
2022-07-29 10:40:02 -04:00
Jonathan
3ee28fc416
fix crash in light from bounce lighting storage
...
move bounce lights to a forwardly linked list
fix minlight affecting style 0 for switchables
2022-07-29 00:41:24 -04:00
Jonathan
d33acbe12c
remove snapvertices cmd
2022-07-28 09:25:19 -04:00
Jonathan
1d8a0c1df3
clang-format pass
2022-07-28 06:14:54 -04:00
Jonathan
d9a9046e46
fix some foot-guns with qbsp_plane_t - type is auto-set now
2022-07-28 05:51:55 -04:00
Jonathan
64cd39c229
add optional vertex snapping to match qbsp3
2022-07-28 03:56:12 -04:00
Jonathan
c9935aaa38
hook up merge and subdivide stats
2022-07-27 23:02:09 -04:00
Jonathan
1f1388b2dd
remove the type assertions
2022-07-27 22:49:41 -04:00
Jonathan
146f20f677
qbsp_plane_t is now used by other structures, and contains a faster epsilonEqual; since the majority of planes (especially nodes) are going to be axial, there's no need to use the slower full comparison when we can check if the axial component is ready.
2022-07-27 22:44:09 -04:00
Jonathan
9c73416594
Squashed commit of the following:
...
change temp-named planeside_ to plane_flipped
commit 8b3938f5069837e76504a16ffd019a8682fd4325
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 05:35:05 2022 -0400
fix compile errors/warnings
commit 0c19a922490a332a084ceb65bbb88368fecb40a1
Merge: 31edc84e a2451a41
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 05:30:54 2022 -0400
Merge branch 'brushbsp' into paril/brushbsp_plane2
# Conflicts:
# qbsp/portals.cc
# qbsp/tree.cc
commit 31edc84e5a0f16196aacb4e465657954a523ccf9
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 02:55:52 2022 -0400
use std::map for the two other hashes (edge/vertex) for speed
commit a9bb68b6ea203226d21f73d42558ffe388fc3051
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 02:31:45 2022 -0400
remove final uses of FindPlane
commit 951a2b1977f813751c93417901a775a7a0cb77f4
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 02:01:19 2022 -0400
only set flipped status if we actually flipped; this seems to have no affect in practice, but it was wrong in theory
commit 97610203bebb115391ef39ea2b5c6400b9ce2d89
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 01:56:19 2022 -0400
remove FindPositivePlane
commit d424afbb2cfa32669883f5aafcf34555169eec3e
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 01:22:10 2022 -0400
side_t uses plane and side_ now
commit af883bc111049a8c6fcb12c8c888e17f03cf30ff
Author: Jonathan <jonno.5000@gmail.com>
Date: Wed Jul 27 00:46:52 2022 -0400
face_t uses internal plane
commit 1cd776c89b683b0af0d8a642eee7e54b5f54b559
Author: Jonathan <jonno.5000@gmail.com>
Date: Tue Jul 26 22:59:47 2022 -0400
node_t using plane directly, pulling planenum in when necessary
commit 8b34312ef9c3d416c011f2694a34fb9d5eba4faa
Author: Jonathan <jonno.5000@gmail.com>
Date: Tue Jul 26 22:22:28 2022 -0400
remove PLANENUM_LEAF, use a boolean for the separation
2022-07-27 05:38:50 -04:00
Eric Wasylishen
a2451a41fb
qbsp: rewrite of q1 contents representation in bspfile.cc
...
use q2-like bitflags so we can represent mixes like (water | mist), which we need within the compiler
2022-07-27 02:31:49 -06:00
Jonathan
4e3739c751
use a reader/writer-esque lock (shared_mutex) instead of exclusive-only recursive lock to speed up plane stuff
2022-07-24 19:05:28 -04:00
Jonathan
f6d6972b17
fix percents being output when not requested for submodels
...
tjunc using MWT algorithm
2022-07-22 12:25:06 -04:00
Jonathan
f1f11e6f3b
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-07-19 08:42:13 -04:00
Jonathan
989788cf71
add a switch to optimize compiles for no software mode (mainly for Q2)
...
fix tjunc 3 vert faces being destroyed
2022-07-19 08:41:59 -04:00
Eric Wasylishen
6025585f01
switch from std::any to class hierarchy for content_stats_t
...
Fixes bogus (huge integers) content stats reporting on macOS (also fix tjunc stats reporting)
having the non-copyable std::atomic<size_t> inside a std::any which must
be copyable was problematic
IMO this is slightly better because it lets us use non-copyable types
2022-07-18 20:13:33 -06:00
Jonathan
b6153e3084
use make_unique where appropriate
...
use unordered_map/set where ordering isn't important (faster for searching and smaller footprint)
2022-07-18 20:16:50 -04:00
Jonathan
acac6cb720
add in a "validator" setting which is just a thin wrapper to another setting type allowing for an additional validation step
...
simplify the face structure; now, "fragments" just mean the output windings (if you opt out of tjunction fixing, then there will only be 1 fragment with the same values as original_vertices)
move MakeTangentAndBitangentUnnormalized to qvec.hh since we will use it later
-tjunc allows for more fine-grained control now (-notjunc still exists)
-maxedges now throws if you specify a bad value (1 and 2)
remove the checks to OmitFaces - we can tell if a face was omitted because it will have an empty winding
remove static variables from tjunc
2022-07-16 10:45:24 -04:00
Jonathan
da9546e260
change settings semantics to be simpler and more clear:
...
- no more "isLocked" - use getSource directly (locked is a confusing name)
- no more split parse/setValue functions. there's only one entry point each now, and all they do is pass along the source passed to it from its parser.
- no separate setters, use setValue(value, source)
- add a "game target" source, which is low priority and indicates to the user that the value would have been default but was changed to a better value for the game target
2022-07-14 09:03:59 -04:00
Jonathan
feb6055b07
remove errors pertaining to MAXEDGES (except on output) since we dynamically expand now
...
allow command line to specify maxedges
default maxedges to 0 (no limit) for Quake II
2022-07-14 04:57:52 -04:00
Jonathan
ae4c5cd365
change face output to be slightly more robust
...
fix tjunc multithreading; added `original_vertices` which is a copy of the `output_vertices` that is safe for tjunc to read from since tjunc writes to the former
2022-07-14 01:56:18 -04:00
Jonathan
8240d753ee
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-07-13 04:35:46 -04:00
Jonathan
d9dc54d267
remove vertex rounding
...
fix vertex hash not including negative axis points
use angle instead of zero-area triangle
2022-07-13 04:35:42 -04:00
Eric Wasylishen
d38a65c709
qbsp: revert sidespace to 24
2022-07-13 00:29:45 -06:00
Jonathan
0fb1b429a8
finish tjunc algorithm - can now retopologize by splitting fans up
...
lower zero-area triangle epsilon
2022-07-12 17:43:25 -04:00
Jonathan
1aa2a9b250
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
...
# Conflicts:
# qbsp/qbsp.cc
2022-07-11 01:41:10 -04:00
Jonathan
f98dd05f56
new, simpler qbsp3-esque TJunc code;
...
- currently uses naive brute force approach to finding vertices on faces
- simplify 'face fragments', which now only need to contain vertex indices since they are already emitted
2022-07-11 01:40:10 -04:00
Eric Wasylishen
f86a5343fb
qbsp: rename options -> qbsp_options
2022-07-10 17:30:00 -06:00
Eric Wasylishen
d32d6ea81d
light: rename options -> light_options
2022-07-10 17:28:28 -06:00
Eric Wasylishen
b7969eee49
vis: rename options -> vis_options
2022-07-10 17:26:55 -06:00
Jonathan
2a70cafa32
kinda fix overbrightness? still needs work..
...
allow lmshift force on light
2022-07-10 13:31:38 -04:00
Jonathan
b30d200543
remove `entity` from functions that no longer need it
...
EmitVertices as its own phase
2022-07-10 12:50:16 -04:00
Jonathan
17112d3683
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-07-10 03:21:44 -04:00
Jonathan
f213f4aa45
fix edge sharing
...
remove the "don't share edges if they have different contents" thing
2022-07-10 03:21:36 -04:00
Eric Wasylishen
5da679d699
qbsp: trim some legacy comments/code
2022-07-10 00:15:25 -06:00
Eric Wasylishen
d590e3d940
qbsp: move MakeBspBrushList to csg.cc for qbsp3 parity
2022-07-09 23:44:22 -06:00
Jonathan
8fc089aa34
fix lmscale with bounce lighting
2022-07-09 23:09:02 -04:00
Jonathan
865217c655
adjust final output warning
2022-07-09 01:36:26 -04:00
Jonathan
56e1e2dde0
adjust lightstyle overrun warnings to be less annoying
...
fix potential overrun in lightstyle writing
2022-07-09 01:36:26 -04:00
Jonathan
2b0a04a188
fix spacing
2022-07-08 02:07:01 -04:00
Jonathan
5f37159224
allow disabling auto-upgrade, in the case where you don't want it to keep trying to output a BSP2/QBSP when it won't work in your target engine(s)
...
# Conflicts:
# include/qbsp/qbsp.hh
2022-07-08 02:06:12 -04:00
Jonathan
adc54dac61
fix bug with output of lmstyle/lmoffset lumps
...
bspinfo will output proper atlasses now
use faceextents_t everywhere
2022-07-08 02:06:07 -04:00
Jonathan
43c5e942b2
move faceextents_t & friends to common
...
use stb_image_write for PNGs for better compression on bsp.json
add in code for spitting out a lightmap from a face. doesn't support other styles and such yet.
2022-07-08 02:06:06 -04:00
Jonathan
705ab73169
rename light option `lmscale` to `lightmap_scale` to reflect its qbsp usage (a forced replacement of the "default" lightmap scale)
...
allow qbsp to be passed an `-lmscale` to facilitate a global lmscale change for BSPX
fix code paths for writing both lightmap sizes out
# Conflicts:
# include/qbsp/qbsp.hh
2022-07-08 02:06:06 -04:00
Jonathan
14455e97e6
fix for Q2 phong values not applying properly
...
(cherry picked from commit 0d76e62846 )
2022-07-06 19:33:07 -04:00
Eric Wasylishen
20ca6d2ef9
qbsp: add sphere bounds for bspbrush_t
2022-07-05 00:20:57 -06:00
Jonathan
6caee83eb2
remove old string parse stuff since we don't use it any more (the "parse the rest" method)
...
(cherry picked from commit fb3ff5decd )
2022-07-04 20:47:11 -04:00
Jonathan
0483db5c55
remove sky visibility stuff; not necessary with the approx methods
...
show sky hits in light points stats
merge surface light stuff (minlight, etc)
default surface lights with radiosity to spotlight, to match Q2
(cherry picked from commit defa4cafce )
2022-07-04 20:47:06 -04:00
Eric Wasylishen
92aa55db8f
qbsp: clean up some dead code
2022-07-04 01:15:17 -06:00
Eric Wasylishen
ac80d11e69
qbsp: move FreeTreePortals to tree.cc
2022-07-04 00:26:28 -06:00
Eric Wasylishen
fce258a7b7
qbsp: csg4.cc -> csg.cc
2022-07-04 00:17:18 -06:00
Eric Wasylishen
296426f526
qbsp: use unique_ptr for tree_t
2022-07-03 23:48:00 -06:00
Eric Wasylishen
97d360120b
qbsp: use unique_ptr for node_t::facelist
2022-07-03 23:41:48 -06:00
Eric Wasylishen
4ab4cb7dc8
qbsp: use unique_ptr for portal_t
2022-07-03 22:45:25 -06:00
Eric Wasylishen
de68bee886
qbsp: move tree_t to tree.hh
2022-07-03 21:36:17 -06:00
Eric Wasylishen
a6312753a4
fix clang build
2022-07-03 20:45:35 -06:00
Jonathan
a0d81372d1
improved path detection (and overriding) routines
...
(cherry picked from commit 32f33fb4b3 )
2022-07-03 18:23:40 -04:00
Jonathan
3527dcf39b
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-07-03 14:21:39 -04:00
Jonathan
0bcd92300a
bounce lighting fix
...
change defaults for Q2 to look a bit closer to how it looked before
(cherry picked from commit b8bb4cdd2a )
2022-07-03 14:21:25 -04:00
Eric Wasylishen
40bba01b21
qbsp: brushbsp.cc import from qbsp3
2022-07-03 01:22:09 -06:00
Jonathan
cc16b886a4
move "points" instead of copying
...
pre-offset points
remove double calculation for pos/dir in lightface (didn't seem to have any visual effect on the output)
2022-07-02 08:49:34 -04:00
Jonathan
f7016d1af0
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-30 05:24:53 -04:00
Jonathan
9f734ff976
Merge branch 'type-cleanup' into brushbsp
...
# Conflicts:
# common/bspfile.cc
# include/common/bspfile.hh
# light/trace.cc
2022-06-30 05:23:05 -04:00
Eric Wasylishen
2127209955
qbsp: add CreateBrushWindings from qbsp3
2022-06-30 00:31:42 -06:00
Jonathan
410106ff90
fix uninitialized memory
2022-06-29 14:27:00 -04:00
Jonathan
03ee5c52e8
add an entry point for specifically loading meta-only file formats, like .wal; used for discerning replacements from their source material (since replacements are often larger than the default, we need the scale info)
...
add a new meta format, which is just a JSON representation of the metadata contained in a .wal
simplify texture loading in `light`
fix `light` not handling replacement textures very well
string_iequals take string_view like the others
move averageColor to be alongside pixel data, where it belongs
2022-06-29 12:59:33 -04:00
Jonathan
292d5afb5e
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-28 06:08:04 -04:00
Jonathan
c1dc3cb7d8
Merge branch 'type-cleanup' into brushbsp
...
# Conflicts:
# include/common/bspfile.hh
2022-06-28 04:13:26 -04:00
Eric Wasylishen
1693bb3877
qbsp: side_t doesn't need sphere culling
2022-06-28 02:01:41 -06:00
Eric Wasylishen
b21e245d99
qbsp: surface.cc -> faces.cc
2022-06-28 00:23:47 -06:00
Eric Wasylishen
eb1f7acc02
qbsp: move PruneNodes to tree.cc for qbsp3 alignment
2022-06-28 00:06:18 -06:00
Jonathan
44c50717c3
move generic image loading routine to `img`
...
move light-specific "load textures from BSP" routine to light
fix a couple bugs with external wad textures (there should always be at least a 40-byte miptex in there)
light can now load external textures
move -paths to common settings
fix bug with missing texture not filling miptex name
2022-06-28 01:37:12 -04:00
Jonathan
c23b7d2ec9
allow Quake-likes to load textures similarly to Q2 (finding best place to load them from)
...
allow Quake and Q2 to handle other texture formats (mainly just TGA for now)
2022-06-27 11:30:28 -04:00
Jonathan
bf1cb56e5a
fix build
...
add setting to control file priority
2022-06-27 10:41:24 -04:00
Jonathan
cf04f644e0
Merge branch 'type-cleanup' into brushbsp
...
# Conflicts:
# common/bspinfo.cc
# include/common/bspfile.hh
# include/qbsp/map.hh
# include/qbsp/wad.hh
# qbsp/wad.cc
2022-06-27 06:44:45 -04:00
Jonathan
510023e089
step 1 of finishing the rewrite I started of the image subsystems.
...
- for Quake-likes, WADs will be added as file system archives directly when the first brush is encountered since the wad key is ready to go by that point.
- after loading the .map and before constructing the BSP, what I call secondary textures (animation frames for Quake-likes) are added to the list, and the BSP's miptex data is filled.
- BSP miptex data is now opaque to the BSP process; the BSP simply copies the raw miptex information from the input. This simplifies the BSP structures and reading/writing routines.
- the img subsystem supports reading from raw miptexes now, although in practice this only happens for Quake-likes atm
- instead of a "wal cache", maps now have a "meta cache" which stores the metadata information for all games instead of just Quake II
- texture meta can now be ref'd out rather than needing to be copied every time (mainly only a gain for the std::string)
- wad.cc/wad.hh is gone; wads are now pushed into the filesystem archive
- fixed broken wad_archive
- fs subsystem iterated on a little bit; supports marking archives as external (only used for wads currently; see `LoadTextureData`)
- load_tga has better error handling
- add in foot-gun protection to the BSP readers; now they assert on failure to read instead of silently propagating that error throughout the rest of the process
- bsputil uses img stuff now, so it should handle palettes better
2022-06-27 03:58:23 -04:00
Eric Wasylishen
c7111cc99e
qbsp: move FloodAreas to portals.cc for parity with qbsp3
2022-06-27 01:32:34 -06:00
Eric Wasylishen
92dd54c0b1
bspfile: fix is_any_solid() implementation to be just (contents.native & Q2_CONTENTS_SOLID)
2022-06-27 01:19:31 -06:00
Eric Wasylishen
5624f7012a
qbsp: moving PortalThru->Portal_VisFlood, Portal_EntityFlood to portals.cc for qbsp3 parity
...
also fixes to both to match qbsp3
2022-06-27 01:13:21 -06:00
Jonathan
2264de71a2
Revert "very slight speedup (~3% improvement) on normalize; don't sqrt if we don't need to (rare), and use multiplication instead of division"
...
This reverts commit 8fe525f5b2 .
2022-06-26 01:24:47 -04:00
Jonathan
00485553f3
/ should be *
2022-06-26 01:22:03 -04:00
Jonathan
033a84cac8
cache anything related to triangle-face info in a single struct that we access per ray
2022-06-25 22:22:24 -04:00
Jonathan
8fe525f5b2
very slight speedup (~3% improvement) on normalize; don't sqrt if we don't need to (rare), and use multiplication instead of division
2022-06-25 20:56:08 -04:00
Jonathan
a4c304272a
use floats for dealing with ray info, for consistency (and to avoid a bunch of float->double casts)
...
use raydir from hit point rather than calculating it twice
2022-06-25 04:47:26 -04:00
Jonathan
8b1472dfd1
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-24 04:33:14 -04:00
Jonathan
90c08ca1da
move bounce lighting into a post-processing operation and split LightFace into Direct and Indirect
2022-06-24 04:33:08 -04:00
Eric Wasylishen
aabd1c27dc
qbsp: face_t: make contents, lmshifts single sided
...
side_t: same, also remove contents (unused)
2022-06-24 01:14:11 -06:00
Eric Wasylishen
2452d5edda
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-24 00:54:55 -06:00
Jonathan
c7169e11ee
split LightFace into three distinct phases: Create, Light, and Save
2022-06-24 02:54:41 -04:00
Eric Wasylishen
7b81702c08
qbsp: remove unneeded fields from side_t/face_t
2022-06-24 00:54:02 -06:00
Eric Wasylishen
afec0a947e
qbsp: change bspbrush_t.sides from face_t to side_t
2022-06-24 00:43:40 -06:00
Eric Wasylishen
fac5ea384d
qbsp: rename bspbrush_t.faces to .sides
2022-06-24 00:21:55 -06:00
Eric Wasylishen
7e4169f001
qbsp: add a placeholder side_t that's just a copy of fae_t
2022-06-24 00:18:19 -06:00
Eric Wasylishen
b37d29ee33
common: rename side_t -> planeside_t (side_t is used by qbsp3)
2022-06-24 00:16:46 -06:00
Eric Wasylishen
4a1c5842a3
qbsp: rename solidbsp.cc -> brushbsp.cc for consistency with qbsp3
2022-06-24 00:08:12 -06:00
Eric Wasylishen
038651fca6
qbsp: rename brush_t -> bspbrush_t for consistency with qbsp3
2022-06-24 00:01:02 -06:00
Jonathan
579140067f
expose vector.size() using a subtype to not pollute winding_base_t
2022-06-23 18:42:38 -04:00
Jonathan
1718512b09
remove unnecessary "uncompressed_q2" - can just be a single buffer now
...
another ptr->vector
2022-06-23 17:08:50 -04:00
Jonathan
3ac1d02624
fix missing noexcept
...
explicit initialization in some cases for vis winding_t's parameters
more vector
2022-06-23 17:02:18 -04:00
Jonathan
ee596f3ff1
use vector for vis state
...
set autoclean default to true, make it invertable
2022-06-23 16:18:52 -04:00
Jonathan
70d87a52d6
more pointers to vectors
2022-06-23 16:05:11 -04:00
Jonathan
e2c8594450
simplify sample stuff
...
don't clear lightmap if we haven't written to it yet
2022-06-23 01:25:01 -04:00
Jonathan
c6521aa0b6
move aligned allocator to cmdlib
2022-06-23 00:39:28 -04:00
Jonathan
436a9183e7
use aligned allocator for rays
2022-06-22 23:42:38 -04:00
Jonathan
eb50be92f8
use "resize" function to circumvent weird crashing issue
2022-06-22 22:55:05 -04:00
Jonathan
1d221d3999
only use Embree stuff
2022-06-22 22:23:48 -04:00
Jonathan
3f75bb4039
put ExportObj behind an option
2022-06-22 18:13:56 -04:00
Jonathan
cb3ef7b19f
allow radlights to specify an entity dictionary instead (if the input is a .ent, it is an entity dict) which is more flexible
2022-06-22 17:03:00 -04:00
Jonathan
6f6185e1a3
use unique_ptr for leafbits allocations
2022-06-22 16:04:55 -04:00
Jonathan
b725b32c66
fix compile
2022-06-22 15:50:38 -04:00
Jonathan
dfdd568974
use unique_ptr
2022-06-22 14:43:53 -04:00
Jonathan
3fbdfa2a36
allow removing the vis file if completed
2022-06-21 20:46:46 -04:00
Eric Wasylishen
40f370dbd5
Merge branch 'portalfaces' into brushbsp
2022-06-21 16:25:19 -06:00
Jonathan
e97ad64bdc
allow a global override to enable radiosity mode on _surface
...
allow Q2-style rads and Q1-style rads to be added together; also mimic the behavior of _surface which loads multiple lights for a single surface
2022-06-21 17:29:26 -04:00
Jonathan
210d994445
cherry pick commit 96cd23761c from @Shpoike
...
Removed legacy switchable lightstyles limit (requires updated engines when exceeded). Added -facestyles argument that allows for >4 styles per face, as well as potentially increasing style indexes to 16bit for far far more switchable styles.
2022-06-21 15:35:39 -04:00
Jonathan
72914b4724
moving more raw pointers to vectors/smart pointers
...
support for radiosity _surface lights with `_surface_radiosity` key
allow lightstyles for _surface radiosity lights
bounce enabled by default on Q2
remove ValueForKey, use epairs directly
2022-06-21 13:41:51 -04:00
Eric Wasylishen
57473f7b4a
Merge branch 'brushbsp' into portalfaces
2022-06-21 01:45:14 -06:00
Eric Wasylishen
1c4b90a032
qbsp: fix detail_illusionary_noclipfaces_intersecting
2022-06-20 20:53:56 -06:00
Jonathan
df3e6d3988
remove Little* funcs, not used any more
...
remove byteswap as it wasn't used any more
re-introduce imemstream and omemstream to make it harder to accidentally use the wrong operators
add dynamic padding stream manipulator
use memstreams for BSPX
2022-06-20 21:39:08 -04:00
Jonathan
c79e263753
simplify bspx code
...
remove old obj preview for wrnormals
2022-06-20 20:42:34 -04:00
Jonathan
4163ab80cf
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-19 19:23:04 -04:00
Jonathan
9354fc8148
reserve as much as we currently have allocated rather than only exactly how much is coming up
2022-06-19 19:22:34 -04:00
Jonathan
cd77b1a7e6
use vector as overflow instead of secondary storage for winding
2022-06-19 19:17:52 -04:00
Eric Wasylishen
4f3ca8c252
qbsp: wip import MarkVisibleSides from qbsp3
2022-06-19 16:04:54 -06:00
Eric Wasylishen
5fc6cbc95e
qbsp: wip import MakeFaces from qbsp3
2022-06-19 16:04:54 -06:00
Eric Wasylishen
c91bf3fc8d
qbsp: add missing include
2022-06-19 16:04:29 -06:00
Jonathan
e366898796
re-introduce vis culling, mainly for Q2/surface lit maps
...
-novisapprox gone; replaced with -visapprox auto|none|vis|rays
2022-06-18 23:56:45 -04:00
Jonathan
b54e72a184
re-implement the vis changes
2022-06-18 18:42:00 -04:00
Jonathan
b21920841d
revert some of the vis stuff, but re-implement it in a more working state
2022-06-18 18:36:09 -04:00
Jonathan
dfa1282d40
simplify/c++-ize CompressRow code and related areas (less allocations overall)
2022-06-18 18:25:23 -04:00
Jonathan
ea985eb5ac
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-18 17:29:13 -04:00
Jonathan
ac05a7ecf6
Revert "simplify/c++-ize CompressRow code and related areas (less allocations overall)"
...
This reverts commit 46aaa81ffd .
2022-06-18 17:29:07 -04:00
Eric Wasylishen
b91973bae1
qbsp: remove old/unused portal code
2022-06-18 13:44:24 -06:00
Jonathan
7eedf52bf4
sync up BaseWinding checking
...
add constructor to aabb to construct from range
2022-06-18 14:33:16 -04:00
Eric Wasylishen
214a2550f4
qbsp: isolate portal_state_t in prtfile.cc
2022-06-18 00:32:40 -06:00
Eric Wasylishen
1fb5753f60
qbsp: import CreateVisPortals_r from qbsp3
2022-06-17 23:59:19 -06:00
Eric Wasylishen
af2dd987d8
qbsp: import BaseWindingForNode from qbsp3
2022-06-17 22:10:11 -06:00
Eric Wasylishen
3e2045479b
qbsp: move .prt writing to prtfile.cc to align with qbsp3
2022-06-17 20:31:37 -06:00
Jonathan
b0dad9d01d
save a few more cycles by just using raw pointers. it's a bit uglier, but this is hard to represent with shared_ptr and I think it was the wrong choice anyways since the ownership chain is difficult to represent in a shared_ptr here.
2022-06-17 14:56:17 -04:00
Jonathan
c3bb07acaa
~33% speed improvement on vis by using already-allocated memory for the vis stack
2022-06-17 13:53:35 -04:00
Jonathan
46aaa81ffd
simplify/c++-ize CompressRow code and related areas (less allocations overall)
2022-06-17 12:06:37 -04:00
Jonathan
238a7b8fa7
document FACENORMALS lump
2022-06-17 10:59:24 -04:00
Eric Wasylishen
259d95e47c
testqbsp: add a first portal test
2022-06-17 01:53:08 -06:00
Eric Wasylishen
0edd52517a
testqbsp: read .prt files back in
2022-06-16 23:22:15 -06:00
Eric Wasylishen
f6309a91cb
vis: move .prt reader to common
2022-06-16 21:55:03 -06:00
Eric Wasylishen
a746506d6a
clang-cl build fix
2022-06-16 20:54:15 -04:00
Jonathan
0b67acd4ba
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
...
# Conflicts:
# include/common/bspfile.hh
2022-06-16 20:22:36 -04:00
Jonathan
e57633bbca
the old Safe read/writes are gonedy now
2022-06-16 20:22:03 -04:00
Eric Wasylishen
b164b7b250
bspfile: fix bad optional access on Q1 maps
2022-06-16 17:14:40 -06:00
Eric Wasylishen
83271c5dac
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-16 17:06:45 -06:00
Jonathan
5855ab3528
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-16 12:06:45 -04:00
Jonathan
d872514b56
split bspfile.hh into multiple files which store the respective BSP info for the different BSP types; bspfile_generic stores the upper-most data (the superset of all BSP types), whereas the individual files contain the subsets.
2022-06-16 12:06:37 -04:00
Jonathan
740ab24626
bspx stuff into its own file
...
change the printing to be less redundant on BSP version
2022-06-16 10:59:22 -04:00
Jonathan
f53a6a19fe
move extended_texinfo_t to qbsp, since it's only used during compilation and not related to the BSP file
2022-06-16 09:50:00 -04:00
Jonathan
41ef66190f
consistency rename; gtexinfo_t -> mtexinfo_t
2022-06-16 09:36:31 -04:00
Jonathan
617cd3b089
consistency rename; texdata_t -> maptexdata_t
2022-06-16 09:35:46 -04:00
Jonathan
c62480c337
consistency rename; mtexinfo_t -> maptexinfo_t
2022-06-16 09:35:08 -04:00
Eric Wasylishen
b8dcc7535e
qbsp: rename FreeAllPortals -> FreeTreePortals_r
2022-06-15 23:27:39 -06:00
Eric Wasylishen
dfb8d7c9fc
qbsp: refactoring portal code towards qbsp3
2022-06-15 21:37:19 -06:00
Jonathan
8afcc54b74
move making contents valid from brush parsing into gamedef
2022-06-15 09:07:37 -04:00
Eric Wasylishen
3474dd00c5
qbsp: add portal_t::onnode, tree_t from qbsp3
2022-06-15 00:45:58 -06:00
Eric Wasylishen
0c24e7bbd0
clang-cl build fix
2022-06-14 20:18:06 -06:00
Jonathan
eedabe6f1c
fix bugs
2022-06-14 18:38:22 -04:00
Jonathan
17656eff78
don't return string ref, since it can be modified after it's inserted because of the vector growing
2022-06-14 18:34:01 -04:00
Jonathan
78b979d670
Merge branch 'type-cleanup' into brushbsp
...
# Conflicts:
# include/light/entities.hh
# qbsp/brush.cc
# qbsp/map.cc
2022-06-14 17:19:30 -04:00
Jonathan
d24ea4922a
entdict cleanup
2022-06-14 17:18:13 -04:00
Jonathan
f1fd0bd30f
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
2022-06-14 10:50:54 -04:00
Jonathan
7827885f0f
add texturedef support
...
change Q2_CONTENTS_TRANSLUCENT parsing; remove it always, but if the surface doesn't have TRANS then swap it with DETAIL which is probably what they intended
2022-06-14 10:50:35 -04:00
Eric Wasylishen
a309e8467b
testmaps: add qbsp_q1_sealing.map
2022-06-14 00:44:50 -06:00
Jonathan
b2a0f8039e
remove dm/start/coop checking
...
remove entity target(name) checking; as mods and maps get more complex, this is best left up to the editors to use the FGD to report these things.
2022-06-13 07:10:53 -04:00
Jonathan
4e2e1c9bb3
default filltype to auto, which uses outside for hullnum > 0 and inside otherwise (lower leaf & node counts)
2022-06-13 06:19:58 -04:00
Jonathan
12caf1bcd4
move transsky/transwater code into portal_can_see_through
2022-06-13 02:34:39 -04:00
Jonathan
4755f23efa
re-implement inside filling (not working fully yet)
2022-06-13 01:44:06 -04:00
Jonathan
98682f41fa
move brush/leaf counts into gamedef
...
(Q2 stores every combo currently, old code kept in case we want to use that instead)
2022-06-12 03:35:44 -04:00
Jonathan
1a88b46e8c
RemapContentsForExport moved into gamedef
...
simplified gamedef stuff by checking which functions were still necessary, and no need to pass extended flags through at all now
detail type moved into Q1
2022-06-12 02:24:27 -04:00
Jonathan
54900cf7b6
move visblocker to a boolean
2022-06-12 01:02:31 -04:00
Jonathan
13bf99a7f3
fix test cases (implement equals(game) properly, and `is_empty` is false depending on get_content_type for Q2 now)
...
remove unnecessary condition from Q2 contents_are_empty since areaportals are already considered a valid non-empty type via get_content_type
2022-06-11 09:19:51 -04:00
Jonathan
10676603e9
move clip & origin into game-specific code
...
remove hint from brush; hint is technically a surface flag rather than a content flag, so we can infer it from the sides rather than needing to store it as a unique flag (we could still cache the result somewhere but this makes it consistent between q1 and q2)
2022-06-11 08:29:55 -04:00
Jonathan
b33e792458
move clip-own-typeness over to gamedef & contentflags (fixes Q2 edge case with a solid version of a type bordering a translucent version)
2022-06-11 06:01:36 -04:00
Jonathan
e61998dd54
Merge branch 'brushbsp' of https://github.com/ericwa/ericw-tools into brushbsp
...
# Conflicts:
# qbsp/surfaces.cc
2022-06-11 05:43:29 -04:00
Jonathan
8b4f9f5480
move mirrorinside to gamedef
2022-06-11 05:37:50 -04:00
Eric Wasylishen
5372c4a568
qbsp: fix q2 liquids not mirrored
2022-06-10 23:29:28 -06:00
Eric Wasylishen
64159d92f1
Merge remote-tracking branch 'github-desktop-paril/type-cleanup' into brushbsp
2022-06-10 21:32:23 -06:00
Eric Wasylishen
fc5f1573ef
qbsp: simplify ShouldClipbrushEatBrush
...
fixes lavaclip test case
2022-06-10 20:00:42 -06:00
Eric Wasylishen
d4f1707cdb
qbsp: proper merging of Q2 contents
2022-06-10 19:19:00 -06:00
Jonathan
812797f7ed
enable lighting for warp/sky in Q2
...
simplify bitflag definitions
change nudging light warning to make more sense
another #define -> constexpr pass
2022-06-10 06:29:14 -04:00
Jonathan
5b4660fa63
simplify crc code
2022-06-10 04:47:10 -04:00
Jonathan
42c4060a64
canonize plane stuff into an enum type, remove duplicates
...
more macros into constexpr's
use options.epsilon directly instead of ON_EPSILON in qbsp
2022-06-10 04:43:56 -04:00
Jonathan
0d56c49d7a
remove hardcoded lightstyles max, use config option
2022-06-10 04:22:12 -04:00
Eric Wasylishen
3c4f798e97
qbsp: add create_detail_illusionary/fence/solid_contents
2022-06-10 01:07:20 -06:00
Eric Wasylishen
8c1095715c
qbsp: refactor out is_detail(int32_t types = CFLAGS_DETAIL_MASK) since it's going to depend on game now
2022-06-09 23:48:26 -06:00
Eric Wasylishen
47aa1f7476
qbsp: replace is_detail() with is_any_detail(options.target_game)
2022-06-09 23:32:33 -06:00
Eric Wasylishen
33f1681261
bspfile.hh: updates to content type constants docs
2022-06-08 01:03:39 -06:00
Eric Wasylishen
6c3b8a9413
Merge branch 'type-cleanup' into brushbsp
2022-06-07 20:05:02 -06:00
Eric Wasylishen
4941a86cbe
qbsp: rest of fix for qbsp_q2_bmodel_collision, only needed on type-cleanup branch
2022-06-07 19:49:39 -06:00
Jonathan
d348a4cb6b
fix nodes getting negative planes from certain splits
...
# Conflicts:
# include/qbsp/brush.hh
# qbsp/solidbsp.cc
2022-06-07 20:31:28 -04:00
Jonathan
3d539b9660
fix nodes getting negative planes from certain splits
2022-06-07 20:30:10 -04:00
Jonathan
c5e864fca1
re-enable stuff
...
undo the shared lock stuff
2022-06-06 03:26:19 -04:00
Jonathan
8f50108b5e
slight optimization for winding_t: use memcpy directly. the copy constructor can't automatically optimize it into a memcpy because of the iterator wrapper.
...
use side_t where appropriate
add a shared lock to map.planes, and hide the original vector to prevent non-locked read/writes
move MakeSkipTexinfo to the beginning of the operation - make a global skip texinfo as the first texinfo. it will get culled out later if need be.
re-enable ChooseMidPlaneFromList; seems to work, but maybe there's a test that is failing that is the reason it was if'd out?
enable parallelization of PartitionBrushes since map.planes is lockable now
2022-06-05 22:52:02 -04:00
Eric Wasylishen
e3ee12e985
Merge branch 'type-cleanup' into brushbsp
2022-06-03 23:44:03 -06:00
Eric Wasylishen
b6c421d30e
bspfile.hh: #define -> constexpr for content flags
2022-06-03 20:12:04 -06:00
Jonathan
11f937f0ad
add mottling that was used for _minlight on objects in Q2 maps
...
fix _minlight for Q2
set up a few better defaults for Q2
temp-ish fix for areaportals
2022-06-02 01:05:41 -04:00
Jonathan
65852ef042
adjust settings_set to only accept one token per entry
...
radlights is now a set (only loads one though)
2022-06-01 20:42:06 -04:00
Jonathan
8b4bd6deeb
non-recursive method for animated textures; makes it easier to follow and makes sure the chain ends in -1
2022-06-01 17:42:37 -04:00
Eric Wasylishen
0f2ea5333d
move CompressRow/DecompressRow from vis to common
2022-05-24 21:01:41 -06:00
Eric Wasylishen
016e9a89f2
qbsp: fix base1.map leak with epsilon hacks
2022-05-22 00:38:08 -06:00
Eric Wasylishen
7481f25176
Merge remote-tracking branch 'github-desktop-paril/type-cleanup' into brushbsp
2022-05-21 16:40:33 -06:00
Eric Wasylishen
25b390aafe
qbsp: merge original brush lists when merging leafs in PruneNodes
2022-05-21 16:05:22 -06:00
Eric Wasylishen
3b83508f37
Revert "qbsp: remove unused face csg code"
...
This reverts commit 2ad9e27d3b .
2022-05-21 01:44:59 -06:00
Jonathan
f6ba5d77f9
allow recompilation of PHS from PVS data via -phsonly
2022-05-21 02:45:30 -04:00
Eric Wasylishen
f8c227acbf
Merge branch 'type-cleanup' into brushbsp
2022-05-18 23:17:40 -06:00
Jonathan
b63eb11275
wadpath/xwadpath always take 1 argument
2022-05-18 17:50:05 -04:00
Eric Wasylishen
b21b7466ce
Merge branch 'type-cleanup' into brushbsp
2022-05-16 21:33:57 -06:00
Jonathan
e5685b0909
fix "soft"'s special weirdness
2022-05-15 21:27:34 -04:00
Jonathan
8012d46e46
fix this so soft works at the end of the list
2022-05-15 21:24:01 -04:00
Jonathan
ad85489580
fix windings > N being initialized wrongly
2022-05-15 21:07:35 -04:00
Eric Wasylishen
8fe5d9d694
common: adjust formatting of usage line
...
-remove version hash as it's printed above
-rename `usage` variable to `programDescription`
2022-05-15 17:44:17 -06:00
Eric Wasylishen
49c78292dd
testvis: stub setup
2022-05-15 15:52:54 -06:00
Eric Wasylishen
6f1ca3c79d
Merge branch 'type-cleanup' into brushbsp
2022-05-15 14:02:42 -06:00
Jonathan
d9c6e52bd3
Merge branch 'type-cleanup' of https://github.com/Paril/ericw-tools into type-cleanup
2022-05-15 10:09:41 -04:00
Jonathan
e2512372c3
fix -convert not working properly for Q2 maps
...
begin code for alias files
2022-05-15 10:09:38 -04:00
Eric Wasylishen
c82741ff8a
Merge branch 'type-cleanup' into brushbsp
2022-05-15 00:46:49 -06:00
Eric Wasylishen
e834b848b9
qbsp: fix areanodes test
2022-05-15 00:15:17 -06:00
Eric Wasylishen
9c806d2d15
settings: don't call exit(0) in printHelp() as it's problematic for tests
2022-05-14 18:11:14 -06:00
Eric Wasylishen
c537ad39c1
qbsp: move wadlist to map struct
2022-05-14 15:55:18 -06:00
Eric Wasylishen
bc90198006
qbsp: move wal_cache to map struct
2022-05-14 15:29:58 -06:00
Eric Wasylishen
fa18a6755a
qbsp: fix q2 brush export breaking when multiple tests run
2022-05-14 15:13:47 -06:00
Eric Wasylishen
ba37ae3a54
move serialize_bsp() to common/bspinfo.cc
2022-05-14 14:54:21 -06:00