August 2023
-
Fix OOB access
August 2021
-
update sectors if visibility changed.
Show details
Bugged since forever and would have floors and ceilings stay put when alt-wheeling in mapster.
February 2020
-
Use a 16-gon instead of an octagon if an ART sky has >8 panels
Show details
Backported from NBlood.
March 2018
-
Fix smoothness of q16 mouse aiming
July 2017
-
Address an oversight in r4600.
June 2016
July 2015
May 2015
-
fix rendering of middle part of 1-way masked wall.
Show details
It does not depend on the "swap bottom wall parts" bit being set. The fix is by matching up the related code with Polymost.
April 2015
-
Account for HICTINT_APPLYOVERALTPAL and HICTINT_USEONART.
December 2014
-
include wall[].ypanning in wall invalidation logic.
Show details
Fixes bug reported here: http://forums.duke4.net/topic/1348-mapster32-problems-and-bugs/page__view__findpost__p__213759
-
don't draw masked walls with void tile. DONT_BUILD.
Show details
This prevents displaying W_FORCEFIELD+1 masks (as e.g. in front of viewscreens) completely black with ART mapping. The old behavior, which is inconsistent with classic, is kept for one-sided masked walls, though.
March 2014
-
disable normal/parallax mapping in rotatesprite.
Show details
It was plainly noticeable in the editor's tile info display, for example.
February 2014
December 2013
-
invalidate a wall when its sector's visibility has changed.
October 2013
September 2013
-
in model preprocessing, implement cos/sin by table lookup.
Show details
This reduces the proportion of time the trig calculations take of the whole preprocessing from 50% to about 13%.
August 2013
-
slightly more complete handling of (multi-tile) ART skies.
Show details
- Use the proper tile sequence when multiple pskies are present in a map. However, there's still only *one* psky chosen at map load time. - Handle three horizfrac cases: * 0, psky always at same level wrt screen * 65536, psky horiz follows camera horiz (e.g. E4L9) * otherwise, fall back to default hard-coded parallax implemented as an angle fraction
June 2013
May 2013
-
fix possible NULL pointer dereference in polymer_getbuildmaterial().
-
fix centering of y-flipped wall sprites. (Case D in test_tileoffsets.)
-
fix floor sprites with y flipping by removing special-case code.
Show details
This fixes the case marked with the silver letter C in test_tileoffsets.map. The orientation of the sprites is correct (matches classic) as far as I can see, there are now only problems with translation.
-
rewrite sprite x/y flipping so that data flow is explicit.
Show details
Also, add some defines for sprite cstats to build.h (SPR_*) and use them.
-
Hook ART mapping to rotatesprite.
Show details
The visibility calculation relies on the distance, which might not be entirely accurate in rotatesprite, so maybe it'll be too dark in some cases.
-
Make ART mapping work with any number of shade offsets (eg. BLOOD pal)
March 2013
-
Fix ART offset and sprite flipping interaction.
October 2012
-
only let emitshadow affect shadows, not lightmaps.
Show details
Lightmaps are already opt-in anyway.
-
add support for negative lights
Show details
And hook them up to cstat 128 (half-submerged, 'c' in mapster).
-
add a prlight flag to make shadow-less spotlights
Show details
And hook it up to SE cstat 64 ('1' in mapster32). This disables both lightmaps and shadow maps for the spotlight; please let me know if you have a usecase where you want lightmaps but no shadow maps for specific lights.
July 2012
-
fix underwalls being not animated (introduced in r2823).
-
simplify some code while I'm at it (equivalence tranformations only)
-
bring the ypanning correction for non-pow2 walls closer to Pmost's, pt2
Show details
This changes a constant inside the panning calculation from 256 to 255 (making e.g. panning 255 and 0 the same in the "San Andreas fault" sign in E1L5) and uses the correct reference wall for the "do panning correction?" conditional. Now, the problematic walls should look the same as in Polymost.
-
bring the ypanning correction for non-pow2 walls closer to Pmost's, pt1
Show details
This makes the corrections conditional on where they appear in (under-, over-, white or mask wall).
-
factor out wall y panning coefficient calculation.
Show details
Non-pow2 wall/mask drawing in classic introduced cases where walls are drawn "incorrectly" because they were constructed with the old behavior in mind. Polymer appears to "correct" for it partially, but doesn't cover all cases. Specifically, now we have: - E1L1 first inside secret room (5000, 50000): Polymer draws like Duke 1.5, classic now draws with an offset. - E3L2 near the vault (-20000, 25000): both classic and Polymer draw with offsets compared to Duke 1.5, but they're different! This means that more research is needed into what makes these two cases diverge, even though both have the same root cause. !!! Also, mappers should abstain from using non-power-of two textures on walls until this issue is resolved in a satisfactory fashion !!!
April 2012
-
when drawing art sky, temporarily set texcoord s wrapping to clamping.
Show details
This properly fixes the unwanted vertical lines.
March 2012
-
Fix a potential uninitialized mem read in debug msg when in void space.
-
cull sprite lights after computing sprite geometry
Show details
This was broken ever since updatesprite() had been forked off drawsprite() and would cause static lights to never hit static sprites until one or the other changed, after which the light would always get culled against outdated sprite geometry.
-
don't shadow-optimize light culling in cached sprites
Show details
Since updatesprite() only happens once for static sprites, avoiding light culling if we hit it in a shadow pass means that sprite will never be lit as long as that happens.
-
fix animations that loop to frame 0
Show details
With VBOs enabled, the virtual pointer to the geometry of frame 0 of a model is always NULL. This was confusing the polymer code responsible for deciding whether to enable smooth animations or not, which meant that any animation that would loop to frame 0 would do it as if animation interpolation was disabled, which looks very choppy.
October 2011
-
support for creating a debugging context in winlayer
Show details
This also fixes a warning when building for Windows.
-
fix stupid typo that broke r2057
-
constantly get the textures handle for projective spotlights
Show details
Getting the texture handles without requiring invalidation means we can handle ART-animating tilenums without impacting performance too much.
-
fix horizontal spotlight SEs constantly getting invalidated
Show details
Polymer has a hack that snaps horiz values of spotlights between 90 and 110 to 90 and 110 to avoid triggering aliasing artifacts with perfectly horizontal spotlights. Propagate that change all the way to the spotlight SE sprite so that the code won't think that the horiz is always different from the light and mark it invalid each frame.
-
preliminary support for GL_ARB_debug_output
Show details
This won't actually do anything until the a debug bit is added when creating the context, but that requires support for GLX_create_context which SDL doesn't support. I'll add support for WGL_create_context to winlayer in a bit as a stopgap. Also updates our local copy of glext.h with a fresh one from the Khronos registry.