Ясно, что эта оптимизация не работает хорошо 100% времени. И без нее на конкретно вашем компьютере может хватать вычислительной мощности для 60фпс. Но если она работает достаточно часто, то почему бы ее и не применить?
А профит тут в том, что вы вот так вот обходите не все дерево. а только маленькую его часть.
public struct FastSetPixels<TColor,TBlend> : ISetPixels<TColor,TBlend> where TColor : unmanaged, IColor<TColor> where TBlend : unmanaged,IBlend<TColor>
{
public static void SetPixel(ref ColorBuf<TColor> image, ArrayView1D<int, Dense> zBuffer, TColor color, int zInd, int addr)
{
if (zBuffer[addr] < zInd)
{
zBuffer[addr] = zInd;
image.SetBlendOperation<TBlend>(addr, color);
}
}
public static void SetPixelAtomic(){}
Тогда как я ожидаю более менее плавное по градиенту изменение цвета. Мне же нужен финальный параметр для блендинга. А он сразу же в 2 раза падает на расстоянии 1.4, тогда как ожидаю под 100%.
Я просто не понимаю, где взять параметр, который я засуну в функцию Lepr(color1,color2,f)