Both X and Y offsets work on sky textures now. Old incorrect offset has been removed, so old skies lined up with the horizon special should be set to +16 Y offset.
- Column would be zero length if there are no visible
pixels in it.
- Trying to draw such a column results in a negative
heightmask in R_DrawColumnTemplate and a probable read
out of bounds.
- Some maps may contain very large or very many (animated)
textures
- Texture sets are not typically shared between maps, so
each texture allocation may go unused for a long time
after the map ends
- Keeping these PU_STATIC leads to significant memory
usage over the program duration
- Holey textures are ones where the column height may not
match the texture height.
- R_DrawColumn cannot cope with this directly and it may
lead to a read out bounds.
- Transparency would not render for true wall textures
anyway since these are not masked midtextures, so just
don't render the texture in this case.
- In R_DrawColumnTemplate, texheight is used to switch
between a non-PO2 rasterizer and a more efficient PO2
rasterizer.
- There is bounds checking on the non-PO2 version (in the
form of sourcelength) but not on the PO2 version.
- texheight was set to the sprite patch height, which may
be taller than the column (sourcelength), leading to a
read out of bounds.
Two reasons:
- Makes it more straight-forward to add brightmaps to the non-power-of-two rendering functions.
- Made it easier to split off brightmap rendering. Hopefully improves performance, but I haven't thoroughly tested this.
- Software* + OpenGL support
- *Not supported: R_DrawColumnShadowed_8
- This has something to do with walls and FOF lights.
However, I don't see an easy code solution and I don't
know how to even test this.
Fix some R_MapPlane crashes in splitscreen; debugrender_visplanes and debugrender_portal; some multithreading crashes
Closes#1032 and #1021
See merge request KartKrew/Kart!1997
Now compiles on Ubuntu 22.04, which only has libfmt 8.
I don't know which exact version of libfmt we need but the
one in thirdparty works.
This version of libfmt is header-only.