Commit Graph

133 Commits

Author SHA1 Message Date
Jonathan 0833d84a7a Calculate tangents and bitangents (need to clean this up)
Implement formatters for qvec
Add -nolighting, which skips all non-lightstyled lights
2021-10-05 01:07:13 -04:00
Jonathan 792951792c some more cleanup 2021-10-02 05:56:45 -04:00
Jonathan 9d828d2085 Structured texture data!
Move vis decompress/compress back to vis since phs is handled there now too
Fix missing textures in Q1BSP
Comment areaportaling for now
2021-09-30 11:33:04 -04:00
Jonathan a6f6cc2d15 qvec now has an empty default initializer, for speed purposes; fixed up places that relied on this behavior
simplified constructor for qvec(T...) that uses fold expressions
simplified rgba_miptex_t
fixed a lot of broken winding_base_t behavior
merged all winding types into winding_base_t
removed now-empty files
2021-09-27 20:44:15 -04:00
Jonathan 87d31e6d4f A lot of type-y stuff here:
- bsp store vectors now
- vis stored in a way that is compatible with both Q2 and Q1
- binary reading of stuff, so swapping is done at load time now
- vis cleanup, although there's still a lot of raw long modification that should get simplified later
2021-09-25 23:58:02 -04:00
Jonathan 41b9a79e83 Merge branch 'qbsp-contentflags' into type-cleanup
# Conflicts:
#	bsputil/bsputil.cc
#	common/bspfile.cc
#	common/cmdlib.cc
#	include/common/bspfile.hh
#	include/common/cmdlib.hh
#	qbsp/brush.cc
#	qbsp/portals.cc
#	qbsp/writebsp.cc
#	vis/vis.cc
2021-09-23 18:42:25 -04:00
Jonathan 6ff2d67d12 major C++-esque change to BSP conversion:
- main mbsp types are declared first in the files, and types that were single-member are now not structs
- conversion is handled by the sub-types themselves. Currently no diagnostic for *what* members overflow, but, overflow is handled via thrown exceptions on all overflowable members
- aabb type is used where appropriate now, simplifying a few areas
2021-09-22 17:30:46 -04:00
Eric Wasylishen 80a4aa1b97 Merge branch 'master' into qbsp-contentflags 2021-09-22 00:12:27 -06:00
Jonathan 2ebfdb096f Remove COM_Parse, use parser_t
Game controls hull sizes now
2021-09-20 19:45:09 -04:00
Jonathan 49fd62b9f3 Lotta more file stuff. Have to think about fscanf though. 2021-09-19 22:20:39 -04:00
Jonathan 326626f127 Remove some old stuff
Cleanup/rework of logging system. I'm not too happy about it still, but, it's at least a bit easier to follow now.
Started cleanup of file-related stuff.
2021-09-19 18:17:28 -04:00
Jonathan 17606fde4b Use variant instead of having all BSP types allocated at once (even though they are smol)
Move ownership of pointers to the bsp structures themselves for now.
2021-09-16 11:52:37 -04:00
Jonathan e8bd554cc0 winding_t is now a C++ type - a hybrid stack/heap array.
In preparation for converting all of the vec_t[3] to qvec's, the Vector routines are now templated and work with any type that provides indexing operators.
Polylib.cc is gone, since this all needs to be in header now
qvec can now implicitly convert from T[N]
constexpr where appropriate
static inline -> inline
side_t is now an enum, moved into mathlib
2021-09-16 03:10:51 -04:00
Jonathan eb6bb81d61 use the C++ includes
stdbool not required
_vsnprintf and _snprintf are standard in MSVC since 2015, so I just use them directly now. They'll be replaced by std::fmt later anyways.
use <thread> for threading, instead of pthreads/windows.h thread directly
2021-09-14 08:46:03 -04:00
Jonathan 7f8d2cfb49 Fix single line functions 2021-09-14 02:56:44 -04:00
Jonathan 4e7542b111 Clang format pass
typedef -> using
include guards -> pragma once
typedef struct x { } y; -> struct y { }
some fixes to extremely old code that shouldn't be required any more
2021-09-14 02:32:26 -04:00
Jonathan facf3490c7 typedef changes 2021-09-13 13:04:18 -04:00
Ozkan Sezer 69cb6b981f
bsputil: write ents in binary mode and print its crc in 4-digit hex (#317) 2021-09-08 17:50:32 -06:00
Jonathan b01fddf7f1 More Q2 support 2021-09-04 18:49:01 -04:00
Jonathan eaa86c71c6
Q2BSP + QBSP (#313)
* Add QBSP - the BSP2-esque variant to Q2BSP - to bspinfo, and all of its accompanying structures.

* pass around ident, since Q2 needs it - admittedly it's a bit ugly, but it works for now.
conversion for QBSP

* Fix light

* _qbsp_ -> _qbism_

* Introduced bspversion_t, a struct that holds pertinent information about different BSP versions and also acts as a tagged pointer type for direct comparisons. This makes a lot of code paths simpler. I'm not entirely set on the wordings or usages yet, and maybe we can stuff boolean flags inside of them for different behaviors (for instance Q2, QBism and HL would have the "colored lightmap" boolean set to true, which replaces the check-for-all-three in the lightmapper)
Swapped arguments to ConvertBSPFormat to have the conversion target last instead of first
Finished rename of qbsp -> qbism
Tested:
 - bspinfo on various BSPs I had laying around (Q1, Q2, Qbism)
 - bsputil converting between Q2 and Qbism, and that they loaded in engine/roundtripped properly
Not tested:
 - vis/rad on anything major (I still can't run rad due to embree being weird)
 - bsputil conversion of Q1-esque maps
2021-08-23 09:56:33 -06:00
Eric Wasylishen c8b2f6f8e6 decompile: fix "done" message 2021-02-08 23:35:07 -07:00
Eric Wasylishen fcf0ebbbfe build: upgrade googletest 2021-02-07 14:42:12 -07:00
Eric Wasylishen b5fcdec19e cleanup: remove "byte" typedef 2021-02-07 14:02:35 -07:00
Eric Wasylishen 03e1171039 decompile: fix some warnings 2021-02-07 00:49:25 -07:00
Eric Wasylishen fcb0da5190 decompile: add a simplifed --decompile-geomonly mode 2021-02-07 00:30:49 -07:00
Eric Wasylishen c1a479c8ff decompile: optimize by doing the RemoveRedundantPlanes in parallel 2021-02-06 22:01:58 -07:00
Eric Wasylishen f981b5e670 decompile: parallelize 2021-02-06 20:23:05 -07:00
Eric Wasylishen 638f250949 decompile: remove some log spam, change copy to const ref 2021-02-06 17:24:57 -07:00
Eric Wasylishen 2d242fcab6 decompile: pick best split 2021-02-06 17:04:34 -07:00
Eric Wasylishen cc116a4729 decompile: restore coplanar faces 2021-02-06 16:19:15 -07:00
Eric Wasylishen 8b9e14eaf1 decompile: setup for splitting up coplanar faces 2021-02-06 14:11:24 -07:00
Eric Wasylishen 32d3fb7f10 decompile: fix typo 2021-02-06 13:57:52 -07:00
Eric Wasylishen 9ae2f8678e decompile: wip brush creation code 2021-02-05 22:42:44 -07:00
Eric Wasylishen e44dbf9307 decompile: add some comments, skip empty brushes 2021-02-04 22:01:37 -07:00
Eric Wasylishen 8bb848d221 decompile: initial texturing 2021-01-31 01:27:35 -07:00
Eric Wasylishen 54525f4dae decompile: handle water leafs 2021-01-30 22:09:26 -07:00
Eric Wasylishen bec54ac47d decompile: handle brush/point entities 2021-01-30 21:32:53 -07:00
Eric Wasylishen 9124653156 common: move EntData_ function to common 2021-01-30 21:11:25 -07:00
Eric Wasylishen 760f18f2ae bsputil: decompiler wip 2021-01-30 20:25:47 -07:00
Eric Wasylishen d4aa42f0ab bsputil: decompiler wip 2021-01-30 14:49:18 -07:00
Eric Wasylishen 569e7fad02 bsputil: make --settexinfo operate in place on the .bsp 2020-05-14 19:53:48 -06:00
Eric Wasylishen 78e902b75e bsputil: add option for swapping a face's texinfo, --findfaces 2020-05-14 17:32:54 -06:00
Eric Wasylishen 8a47233bbf bsputil: start a --compare feature for helping with qbsp testing 2019-01-10 02:58:37 -07:00
Eric Wasylishen 5e472bf817 bsputil: --check: log world mins/maxs 2017-12-12 20:48:57 -07:00
Eric Wasylishen b85d627c8f change branding to ericw-tools 2017-10-19 16:35:37 -06:00
Eric Wasylishen b52c495574 common: fix q2 conversion bugs 2017-10-02 23:32:06 -06:00
Eric Wasylishen 7e429c560c bsputil: add --convert option 2017-10-02 18:27:20 -06:00
Eric Wasylishen 8813d272cb common, light, vis: change from bsp2_t to mbsp_t 2017-10-01 22:32:20 -06:00
Eric Wasylishen 7236e47ef4 bsputil: print used lighstyles 2017-06-25 16:40:06 -06:00
Eric Wasylishen 989f0305ba bsputil: add checks for degenerate faces, unused planes/texinfo/verts,
clipnodes
2017-06-21 16:36:12 -06:00
Eric Wasylishen 13922a2b92 bsputil --check: add some stats on visleafs and vis clusters 2017-06-21 13:24:05 -06:00
Eric Wasylishen c1a9b01c44 bsputil: print BSP node heights for the first few levels of the tree
to check if it's decently balanced
2017-06-13 17:19:42 -06:00
Eric Wasylishen 8a4d1ff218 common: add 4x4 (from mesa) and 2x2 matrix inverse 2017-04-23 15:58:51 -06:00
Eric Wasylishen 880ad3b381 bpsutil, common, light, vis: bounds check bsp->dfaces access 2017-03-18 16:31:52 -06:00
Eric Wasylishen a6468984bf all: finish c++ification 2016-10-17 19:52:17 -06:00
Eric Wasylishen 299e68e7e5 build: support Ubuntu 14.04 2016-09-23 15:13:58 -06:00
Eric Wasylishen 9340ce223a build: clean up request for C++11. require cmake 3.1 (which introduced CMAKE_CXX_STANDARD) 2016-08-09 16:00:09 -06:00
Eric Wasylishen 939778bd23 build: add snprintf wrapper from QuakeSpasm (vs2013 compat) 2016-08-06 15:47:40 -07:00
Eric Wasylishen b087f0f010 build: specify c99 2016-04-18 14:22:33 -06:00
Eric Wasylishen 8773e0bb15 build: fix build error on Linux due to missing target_link_libraries(qbsp ) 2016-03-16 10:48:00 -06:00
Eric Wasylishen 99d5a4d4f9 build: setup CPack to package binaries in a zip file 2015-12-09 16:23:36 -08:00
Eric Wasylishen 420125cc67 replace tabs with spaces.
for FILE in $(find . -name "*.h" -or -name "*.c"); do cat $FILE | expand > temp; cat temp > $FILE; done
2015-12-07 15:08:48 -07:00
Eric Wasylishen c149ed2bf6 build: VS2015 support 2015-12-07 14:23:13 -07:00
Eric Wasylishen 3a109ac84d build: split up cmake build system into subprojects.
-DDOUBLEVEC_T now correctly used for qbsp only.
2015-05-05 12:34:39 -06:00
Kevin Shanahan bdd2ac6127 bsputil: fix wad export from bsp with missing textures
We need to skip over the textures with missing data lumps in the BSP,
i.e. having data offset -1.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2014-02-21 09:21:35 +10:30
Kevin Shanahan 509289efd3 bsputil: don't test < 0 on unsigned vertex and marksurf numbers
Now that our type constraints dictate they can never appear < 0.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-09-29 08:45:06 +09:30
Kevin Shanahan 125ee1f85f bsputil: fix printf format warning (long vs. int)
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-09-29 08:44:37 +09:30
Kevin Shanahan 4b1e3aec1a light, vis, bsputil, bspinfo: Add BSP2 support
Add BSP2 support to the remaining utils.  Since these share the common
bspfile.[ch] files, it was more effort than is justifiable to break this
into multiple staged patches - so you just get this disgustingly big
commit instead.  Here is basically what was done:

 * Modify the bspdata_t struct with a union of the two bsp formats
 * Modify the tools to use bsp2_t for all internal processing
 * Split out the byte swapping routines for the different bsp data types
 * Add simple (although verbose) code to convert bsp29 <-> bsp2

Hundreds of lines added to bspfile.c, but mostly trivial stuff.  The tools
internally had little modification except to substitute the bsp2 type
names.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-09-25 15:18:50 +09:30
Kevin Shanahan 89abf25218 common: convert all tools to instanced bsp data
Transition all tools to access the BSP data via the bspdata struct instead
of the shared globals.  Remove the compatibility code from bspfile which
copied the global values to/from the instanced bspdata struct.

Mostly the changes just involved passing along the bspdata struct to the
various functions which needed to reference the data.  TraceLine and
MakeTNodes in light got some extra changes so that we cache the node
dplane pointer and remove the need to pass the bspdata struct to every
trace operation!

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-22 11:01:08 +09:30
Kevin Shanahan 5facda6ff9 common: constify vec3_origin
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-20 13:30:05 +09:30
Kevin Shanahan 51419621ec common: add the bsp2/bsp29 data types
Rename the default bsp29 data types and add the bsp2 data types to
the common bspfile.h.  Propogate the bsp29 names into the other tools as
simple renames for now.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-20 13:25:16 +09:30
Kevin Shanahan 33eff1ded9 bsputil: Check that face verticies lie on the face plane
Yet another consistency check.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-18 16:34:27 +09:30
Kevin Shanahan c2fbde6af7 bsputil: add --modelinfo option
Dump some info about the faces of internal bsp models.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-08-18 16:32:52 +09:30
Kevin Shanahan a9cfbbc3dc trivial: fix missing newline at end of usage output
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-04-24 14:26:21 +09:30
Kevin Shanahan 4a49552904 bsputil: add missing stdint.h include
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-04-22 12:51:33 +09:30
Kevin Shanahan 195f5869e2 bsputil: add --check option to check internal consistency
First pass, checks most of the data structures actually reference within
the valid ranges.  Will add more soon...

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-04-20 21:11:21 +09:30
Kevin Shanahan 264f613760 bsputil: pass bspdata_t into ExportWad
No longer require the bspfile globals.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-04-20 17:22:10 +09:30
Kevin Shanahan d14793f7ab common: make LoadBSPFile take a bspdata struct
No longer update the globals in this function - make the callers do it
instead.

bspinfo no longer refers to the globals at all.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-04-20 16:51:45 +09:30
Kevin Shanahan 35024bfa7d common: make dtexdata a union
Just having one base pointer was kind of annoying because you have to cast
to get to the lump offsets, then cast to byte * to find the miptex, etc.
Now we can access the same pointer using the correct types in each case.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-04-20 16:34:30 +09:30
Kevin Shanahan 7b36c6fd2f build: query git for version info and print consistently for each util
Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
2013-03-07 14:26:14 +10:30
Tyrann 2e4a4a917f [PATCH] bsputil: Attempt correct byte-swapping in bsp -> wad export
Untested, but this should be all that is required.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-10-09 13:02:07 +09:30
Tyrann 6027e5aeb3 [PATCH] bsputil: Add texture extraction
Add the ability to extract texture information from a BSP file and write it
out as a WAD file. Not very robust in the face of errors or corrupt BSP files,
but it does the job for now.

Signed-off-by: Tyrann <tyrann@disenchant.net>
2006-10-03 08:53:05 +09:30
Tyrann 2c2f3c8eb6 Import initial sources 2006-08-28 23:58:10 +09:30