The effect being used on the horizontal surfaces is literally just a 32x32 map of booleans, for whether to use colour1 or colour2, that is being looked up as it draws each vertical ceiling and floor shard from the tops and bottoms of the wall shards
public static readonly bool[,] DITHER_PATTERN = new bool[,]
{
{T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T},
{T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T},
{T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T},
{T,T,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,T,T,T,T,T,T,T,T},
{T,T,T,T,T,T,T,F,T,T,T,T,T,T,T,T,F,T,F,T,T,T,T,T,T,T,T,T,T,T,T,F},
{T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,T,T},
{T,T,F,T,F,T,F,T,T,T,T,T,T,T,T,T,T,T,T,F,T,F,T,F,T,T,T,T,T,T,T,T},
{T,T,T,T,T,T,T,F,T,F,T,F,T,T,T,T,F,T,F,T,T,T,T,T,T,T,T,F,T,F,T,F},
{T,F,T,F,T,T,T,T,T,T,T,T,F,T,F,T,T,T,T,T,T,T,F,T,F,T,F,T,F,T,T,T},
{T,T,F,T,F,T,F,T,F,T,T,T,T,T,T,T,T,F,T,F,T,F,T,F,T,T,T,T,T,T,F,T},
{F,T,T,T,T,T,T,F,T,F,T,F,T,F,T,F,F,T,F,T,T,T,T,T,T,F,T,F,T,F,T,F},
{T,F,T,F,T,F,T,T,T,T,T,T,F,T,F,T,T,T,F,T,F,T,F,T,F,T,F,T,F,T,T,T},
{T,T,F,T,F,T,F,T,F,T,F,T,F,T,T,T,T,F,T,F,T,F,T,F,T,T,T,T,F,T,F,T},
{F,T,F,T,F,T,T,F,T,F,T,F,T,F,T,F,F,T,F,T,T,F,T,F,T,F,T,F,T,F,T,F},
{T,F,T,F,T,F,T,F,T,F,T,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,T,F,T,F},
{T,F,T,T,F,T,F,T,F,T,F,T,F,T,F,T,T,F,T,F,T,F,T,F,F,T,F,T,F,T,F,T},
{F,T,F,T,F,T,F,T,T,F,T,F,T,F,T,F,F,T,F,F,T,F,T,F,T,F,T,F,T,F,T,F},
{T,F,T,F,T,F,T,F,T,F,T,F,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,F,T,F,T,F},
{T,F,T,F,F,T,F,T,F,T,F,T,F,T,F,T,T,F,T,F,T,F,F,T,F,T,F,T,F,T,F,T},
{F,T,F,T,F,T,F,T,F,F,F,F,T,F,T,F,F,F,T,F,T,F,T,F,T,F,T,F,T,F,F,F},
{F,F,T,F,T,F,T,F,T,F,T,F,T,F,F,F,F,T,F,T,F,T,F,F,F,F,F,F,T,F,T,F},
{T,F,T,F,F,F,F,F,F,T,F,T,F,T,F,T,T,F,F,F,F,F,F,T,F,T,F,T,F,T,F,T},
{F,T,F,T,F,T,F,T,F,F,F,F,F,F,T,F,F,F,T,F,T,F,T,F,T,F,F,F,F,F,F,F},
{F,F,F,F,F,F,T,F,T,F,T,F,T,F,F,F,F,T,F,T,F,F,F,F,F,F,F,F,T,F,T,F},
{T,F,T,F,F,F,F,F,F,F,F,T,F,T,F,T,F,F,F,F,F,F,F,T,F,T,F,T,F,F,F,F},
{F,F,F,T,F,T,F,T,F,F,F,F,F,F,F,F,F,F,T,F,T,F,T,F,F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F,F,F,T,F,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,T,F},
{T,F,T,F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,F,F,F,F,T,F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,T,F,F,F,F,F,F,F,F,F,F,T,F,F,F,F,F,F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F},
};
we'll see what future versions hold.
Although, as I say, I am still reluctant to do an actual floor texture mapper because the last time I did this successfully, it just seemed like such overkill as an algorithm that it's just not worth it for a 16 colour game.
Contrary to my popularisation of Sin, Cos and Tan throughout this project, I am actually not all that good at maths
My strengths are algebra and trigonometry; my weaknesses are matrices, calculus and mental-arithmetic