Commit Graph

17 Commits

Author SHA1 Message Date
Randy Heit af4a3b8447 [ZDBSP]
- Do not count the segs in a separate pass in CreateNode(). This can be computed trivially
  in SplitSegs() as the sets are being built.
- Calculate jump offsets for backpatching without reading the original value. This makes it
  thread-safe (if that ever becomes an issue).

SVN r2478 (trunk)
2010-07-31 04:30:33 +00:00
Randy Heit 08216817e5 - Enable backpatching for VC++ builds of ZDBSP.
SVN r2411 (trunk)
2010-07-05 04:18:37 +00:00
Randy Heit 2de2b094ec ZDBSP:
- Add headers to generated CMake projects.
- Made SSELevel global so that ClassifyLineBackpatch can see it without being part of
  FNodeBuilder. With backpatching enabled, it's rather pointless to have a different one
  per nodebuilder instance, anyway.
- Change ClassifyLineBackpatch so it doesn't need any inline assembly to do its magic.
- Change the ClassifyLine functions to be extern "C" linkage.

SVN r2410 (trunk)
2010-07-04 21:11:25 +00:00
Randy Heit f824fe7a86 - Use CMake build system for ZDBSP.
SVN r2393 (trunk)
2010-06-30 04:40:47 +00:00
Randy Heit 6111d84c1b - Added a vectorized SSE2 version of ClassifyLine. Since compiler support for SSE intrinsics
pretty much sucks, this is slower than the unvectored version I get when I let the compiler
  compile the regular function with SSE2 instructions. It will have to be converted to assembly,
  and then it ought to be a bit faster. Since more than half of ZDBSP's time is spent in this
  one function, it will hopefully be a measurable speedup.

SVN r2392 (trunk)
2010-06-29 03:32:10 +00:00
Randy Heit 594e1fd562 - Bumped ZDBSP version to 1.16.
- Fixed: ZDBSP stored seg vertices in 16-bit words, so it failed to write proper nodes for
  maps that ended up with more than 65536 vertices after node building, even though it can
  write formats that could support it.
- Sync debugging output between ZDBSP and ZDoom's internal node builder.

SVN r2388 (trunk)
2010-06-27 20:05:28 +00:00
Randy Heit fdaa6547f6 - Fixed: A splitter that cannot properly divide a seg into two pieces because it is too close
to an endpoint to produce a unique vertex must be rejected.



SVN r2090 (trunk)
2010-01-02 23:38:49 +00:00
Christoph Oelckers bf47221046 - UDMF implementation for ZDBSP.
SVN r1482 (trunk)
2009-03-15 12:18:25 +00:00
Randy Heit c51e49f02f For ZDBSP:
- Fixed the OrgSectorMap generation in FLevel::RemoveExtraSectors().
- Added a version of ClassifyLine compiled with SSE (but not SSE2) optimization
  for people with Pentium 3/Athlon XPs to use.
- Added ClassifyLine backpatching for the GCC Windows build. The first time a
  function calls ClassifyLine, it has to check which version to use and jump
  to the appropriate one. After that, it calls the desired one straight away.

SVN r227 (trunk)
2006-06-26 20:39:57 +00:00
Randy Heit 6a1a0e007a - Added runtime detection of SSE2 so that ZDBSP can select either the regular
ClassifyLine routine or a version compiled with SSE2 optimizations. This
  pretty much removes any reason to do a separate SSE2 build, since most of
  the time is spent in ClassifyLine, so using SSE2 in just that one function
  helps the most.

SVN r172 (trunk)
2006-06-06 19:15:39 +00:00
Randy Heit 0d37e97f13 - Nodebuilding is a little faster if we inline PointOnSide.
SVN r171 (trunk)
2006-06-06 05:31:53 +00:00
Randy Heit cf0d73b128 - Changed FEventTree into a regular binary tree, since there just aren't enough
nodes inserted into it to make a red-black tree worthwhile.
- Added more checks at the start of ClassifyLine so that it has a better chance
  of avoiding the more complicated checking, and it seems to have paid off with
  a reasonably modest performance boost.

SVN r169 (trunk)
2006-06-06 05:00:46 +00:00
Randy Heit 738eabc6be - Fixed: The vertex selectors returned the vertex block number instead of the
vertex number. Oops. The vertex map also didn't work for maps larger than 32767
  units on a side.

SVN r168 (trunk)
2006-06-06 03:27:24 +00:00
Randy Heit 6d799f0a1c - Added a "vertex map" for ZDBSP's vertex selection. (Think BLOCKMAP for
vertices instead of lines.) On large maps, this can result in a very
  significant speed up. (In one particular map, ZDBSP had previously
  spent 40% of its time just scanning through all the vertices in the
  map. Now the time it spends finding vertices is immeasurable. Now 68%
  of its time on that map is spent inside ClassifyLine--because that
  routine is called more than 16 million times, which suggests that even
  a minor speedup in that routine should have a big impact--if I could
  just think of how that might happen.) On small maps, this won't make
  much of a difference, because the number of vertices to search was so
  small to begin with.

SVN r167 (trunk)
2006-06-06 02:45:48 +00:00
Randy Heit 8617f499d5 - Added code to explicitly handle outputting overlapping segs when
building GL nodes with ZDBSP, removing the check that discarded
  them early on.

SVN r157 (trunk)
2006-05-31 23:17:26 +00:00
Randy Heit 1a979de350 ZDBSP fixes:
- AddIntersection() should convert to doubles before subtracting the vertex
  from the node, not after, to avoid integer overflow. (See cah.wad, MAP12
  and MAP13.) A simpler dot product will also suffice for distance calculation.
- Splitters that come too close to a vertex should be avoided. (See cata.wad.)
- Red-Black Tree implementation was broken and colored every node red.
- Moved most of the code for outputting degenerate GL subsectors into another
  function.
- Removed forgotten debugging file dump from WriteSSectors2().
- Enabled reference optimization and COMDAT folding in the linker for a slightly
  smaller executable.

SVN r155 (trunk)
2006-05-31 15:39:58 +00:00
Randy Heit 24d4f0b45c Initial commit of zdbsp.
SVN r12 (trunk)
2006-02-24 05:17:19 +00:00