-bsp -deep - include detail brushes into BSP tree generation (but at lowest possible priority), but still ignore them for vis
-vis -mergeportals - only merge vis portals on the same plane, but don't merge clusters (much faster vis, but only slightly worse - will evaluate later why it's worse vis at all)
git-svn-id: svn://svn.icculus.org/netradiant/trunk@244 61c419a2-8eb2-4b30-bcec-8cead039b335
- better BSP tree splitting (experimental, option -altsplit)
- also compare shaders when sorting surfaces (should give slightly more fps)
- misc_model spawnflag 32: set vertex alpha from vertex color (for terrain blending)
git-svn-id: svn://svn.icculus.org/netradiant/trunk@240 61c419a2-8eb2-4b30-bcec-8cead039b335
The logic isn't entirely legitimate, since fixedWinding_t is a
fixed-size type that is *sometimes* treated as a variable-sized type,
but it would require deeper refactoring to make this strictly
conforming. As it is, we just keep the offset computation as a
reasonable way to calculate the allocation size.
Fixes#583.
The arrays were always meant to be variably sized, and objects are only ever allocated dynamically. Object size computations are simplified with this change.
Flexible arrays were introduced in C99, so this change means that we will require a C99-conforming compiler henceforth.
Fix subtraction of unrelated pointers and integer overflow in FreeStackWinding (both are undefined behavior).
In rare cases "i" would non-deterministically be between 0 and 2 even though the
pointers were in unrelated addresses, which caused a spurious free of one of
the three windings - eventually the real free would happen, be detected as a
double free and an exit(1) would ensue.
Example contents of w and stack->windings that triggered this in a test: 0xa9251c0 0x7f440a924f78
Checking for pointer equality makes the behavior defined and correct: http://port70.net/~nsz/c/c99/n1256.html#6.5.9