Commit Graph

734 Commits

Author SHA1 Message Date
Garux f3321cef5f * auto fog direction: try all sides, not just axial; default to none, if no visible sides
* q3map_fogDir: pick best matching side, not strict match only; ignore invisible 'bevel' sides
2021-09-08 19:22:18 +03:00
Garux 23d82aa9ef * prioritize +Z fog visible side in ambiguous case (= -Z fog direction), as in fogged pit 2021-09-08 10:11:49 +03:00
Garux 204c3138e2 emit warning on expected practical engine fog limit overflow 2021-09-07 08:14:04 +03:00
Garux 43b5148447 remove -metaMaxBBoxDistance
with current 'pre weld' strategy it's not optimization anymore, also wont work as option to merge non welded triangles with adjusted meta score
2021-09-05 14:45:01 +03:00
Garux 191d489d62 * hasten MergeMetaTriangles and SmoothMetaTriangles to perform typically in 0 seconds
* improve quality of metasurfaces and reduce their count in general case
2021-09-05 11:37:00 +03:00
Garux bafb339c09 MergeMetaTriangles: epsilon compare st, improves merging imprecise sts, e.g. for nonplanar surfaces after q3map_tcgen or just brush face texture projection 2021-09-03 06:23:40 +03:00
Garux d113eed245 improve MergeMetaTriangles out surfaces quality and reduce count 2021-09-03 06:19:41 +03:00
Garux 7f8e548c2f * hasten MergeMetaTriangles greatly (around 30 times in worst case)
this has negative impact on surfaces count in certain scenario (big axial surface of easily mergable triangles)
it wins predecessor once we rotate such surface
so may be consider choosing sorting plane per lump or mergables
algorithm itself is dependent on test data ordering, thus best option would be tweaking it, not prerequisites
`redundant indexes suppressed` count is always worse with this due to sorting nature, sorting per axial plane helps
assuming this optimization is not important and case dependent
2021-09-01 20:16:57 +03:00
Garux f067b5d6c3 tweak -meta 2021-08-28 18:37:22 +03:00
Garux 0ad3d89d4a use spatially sorted indices during search of coincident vertices in AddMetaVertToSurface 2021-08-28 10:56:50 +03:00
Garux e780b45696 enfasten -meta for nonplanar by doing cheap check 1st 2021-08-27 17:13:26 +03:00
Garux 160c1d33db remove -texrange business (assuming it's not relevant for decades)
optimize -meta (shave off 1/3 in worst case)
2021-08-27 12:18:56 +03:00
Garux 3129fd0bce refactor model clipping code 2021-08-20 22:32:33 +03:00
Garux d82996d684 mbspc: fix q3 entities being loaded twice 2021-08-15 18:54:28 +03:00
Garux 1372ea440b more move semantics 2021-08-15 15:15:30 +03:00
Garux bb1931b745 * sort pk3s, so content of later (zzz) overrides earlier, like in radiant and engine
* fix strong performance penalty with large amount of files in pk3s
store pak file path once per pk3, not per each file inside
2021-08-13 03:20:07 +03:00
Garux 4beae3d362 * support entries with .shader extension in shaderlist.txt
vfsListShaderFiles (empty shaderlist = load all shaders, -pk3, -repack):
	only list pk3 .shaders from scripts/ folder
	support non scripts/ shaderPath (e.g. jka)
unlimit shader files count
case insensitive shaderlist entries, so duplicates aren't loaded twice
2021-08-12 11:23:59 +03:00
Garux aa5de2fee9 wrap winding_next logic
prevent crash in AddWindingToConvexHull()
2021-08-11 18:18:38 +03:00
Garux f492ab27eb more c++ in q3map2 2021-08-10 22:41:43 +03:00
Garux 99f4a4a767 minor tweaks 2021-08-03 20:54:21 +03:00
Garux 357f67f237 remove Q_EXTERN int numLights
remove /* potential pre-setup  */ :
1. it seems to never actually be the case
2. it is called from threaded functions, while SetupEnvelopes() itself is not thread safe
2021-08-03 18:26:47 +03:00
Garux f49639c697 std::list<light_t> lights 2021-08-03 07:28:53 +03:00
Garux a743668e44 prevent overflow in gridsize adjustment 2021-08-02 12:03:22 +03:00
Garux 15b391cdb3 minor tweaks 2021-08-02 00:47:18 +03:00
Garux e8996d0857 using facelist_t = std::forward_list<face_t> 2021-08-01 22:50:35 +03:00
Garux c3041cc2f8 using winding_t = std::vector<Vector3> 2021-07-31 18:28:38 +03:00
Garux dbfb22e273 using winding_accu_t = std::vector<DoubleVector3>; 2021-07-30 12:20:56 +03:00
Garux ffa1a4340c std::vector<plane_t> mapplanes 2021-07-29 22:21:36 +03:00
Garux ee92bdd801 minor tweaks 2021-07-27 22:16:05 +03:00
Garux 89b7bcdf53 * read .map brush plane points and store brush planes for windings calculation in double precision (fixes cracks between brush faces) 2021-07-27 20:04:35 +03:00
Garux 3c17f8fbc5 add MST_PLANAR and MST_TRIANGLE_SOUP counts to -info report 2021-07-22 17:32:58 +03:00
Garux 44907db895 Add KTX and ETC1 texture support by @Triang3l
https://github.com/xonotic/netradiant/pull/1
https://gitlab.com/xonotic/netradiant/-/issues/5

This pull request adds support for Khronos Textures to NetRadiant and Q3Map2, with OpenGL ES 2.0 formats, Ericsson Texture Compression version 1, and BGR/BGRA.

The patent-free Ericsson Texture Compression format will be used in the next version of Warsow to significantly reduce VRAM usage on mobile GPUs and the integrated GPU of Intel Broadwell.
2021-07-18 16:18:49 +03:00
Garux 0e4a4fdcf6 * fix _castShadows > 1: cast on world, as advertised 2021-07-02 16:50:01 +03:00
Garux 4697d7940c fix new gcc build error: ‘N’ is not a constant expression, while using offsetof 2021-06-22 20:49:42 +03:00
Garux 5b33fae202 fix clang error: variable-sized object may not be initialized 2021-06-21 17:07:03 +03:00
germangar 3b9b05d40e Undo changing to unsigned int for maxLMSurfaceVerts, maxSurfaceVerts and maxSurfaceIndexes. Restore qfusion.h long value 2021-06-03 22:28:29 +02:00
germangar 451f88efd7 Fix: Do not ignore game descriptor value for maxLMSurfaceVerts and keepLights
Use unsigned int for maxLMSurfaceVerts, maxSurfaceVerts and maxSurfaceIndexes
Fix: Out of bounds value at qfusion.h
2021-06-02 12:16:44 +02:00
Garux 6c00419653 fix spelling 2021-05-24 20:23:09 +03:00
Garux 5efe29d863 * use dynamic maxSurfaceVerts (user preference/game define) in 'force meta process for a surface' decision (was hardcoded) 2021-05-20 17:10:31 +03:00
Garux 31e7829e2b * support negative misc_model scale 2021-05-11 19:05:54 +03:00
Garux 427ef0874b * improve ase export compatibility
write normals after faces
write vertex normals right after their face normal
2021-05-08 14:15:17 +03:00
Garux 9eefda4fc5 * fix texturing, when origin key of group entity is set 2021-05-07 14:50:43 +03:00
Garux 75c7c09903 * replace model loaders by assimp library (40+ formats)
* auto split big model meshes to <= maxSurfaceVerts chunks (avoids excess meta process for vertexlit ones)
2021-05-07 14:47:39 +03:00
Garux 2222100316 indent classes, align by spaces 2021-03-24 00:25:15 +03:00
Garux c7fedadcd1 use std::vector for flagging in SmoothNormals()
functions run about 10% faster due to cheaper access to a flag
2021-03-13 11:16:07 +03:00
Garux 1d4424f4c6 minor tweaks 2021-03-12 01:17:01 +03:00
Garux 09c78ec0dc return Vector3 from vectorForKey() 2021-03-11 20:16:52 +03:00
Garux 1144be0881 add BasicVector3 uniform constructor 2021-03-11 19:14:07 +03:00
Garux 98f9023cdc minor tweaks 2021-03-11 10:57:17 +03:00
Garux 0cff77e30d consider "textures/system/" jka common folder during map decompilation 2021-03-09 20:13:42 +03:00