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(){}
static unsafe F createUnsafe(ref MyStruct s1, int x)
{
// почему нету такого типа
// const int _x =x;
F d = (ref MyStruct s) =>
{
//x же константа, и никуда не убежит
//s.x = _x; // есть ли способы?
// по факту сюда просто Il-команду Ldc.I4 n вставить надо
};
return (d);
}
public class UpdateCanvasListener
{
public Action Update { get; private set; }
public EventHandler< SKPaintSurfaceEventArgs> PaintHandler;
public UpdateCanvasListener(EventHandler<SKPaintSurfaceEventArgs> handler)
{
PaintHandler = handler;
}
}
class canvas{
public readonly static DependencyProperty SurfaceListenerProperty
= DependencyProperty.Register(nameof(SurfaceListener),
typeof(UpdateCanvasListener), typeof(FieldCanvas),
new PropertyMetadata(null, new PropertyChangedCallback(initSurfacePaintCommand)));
private static void initSurfacePaintCommand(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
FieldCanvas obj = (FieldCanvas)d;
var handlerOwner = e.NewValue as UpdateCanvasListener;
obj.PaintSurface += handlerOwner?.PaintHandler;
handlerOwner?.GetType().GetProperty("Update", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)?
.SetValue(handlerOwner, obj.InvalidateVisual };
}
}
Почему именно за 100 итераций? Для вычисления конечного значения итерации не нужны, и вы это понимаете, потому что сначала правильно пишите:
Еще пару вопросов, а как хранятся на gpu данные сцены, к примеру есть такое что все вершины сцены хранятся(или попадают) в одном буфере. Что бы был один буфер индексов возможно полностью скрытый от фронтенда, Или у каждого gameobject свой буфер вершин, буфер индексов в разных местах памяти, а объекты тогда через двойной указатель должны находится в ядрах gpu.
Еще на счет RayTracing, Это полностью другой конввер рендеринга? Типа там нету ни какого отсечения, растеризации, рисования, типа просто идут лучи, по числу пикселей экрана, и проверяются пересечения с объектами в BVH дереве. И типа так просто, или мне только кажется.