Популярним є візуалізація процедурного вмісту всередині GPU, наприклад, в демонстрації (малювання одного квадратика для заповнення екрана і надання можливості GPU обчислювати пікселі).
Рей марширує популярно:
Це означає, що GPU виконує деяку невідому кількість ітерацій циклу на піксель (хоча ви можете мати верхню межу, як maxIterations
).
Як впливає цикл змінної довжини на продуктивність шейдера?
Уявіть простий псуедокод, що марширує променями:
t = 0.f;
while(t < maxDist) {
p = rayStart + rayDir * t;
d = DistanceFunc(p);
t += d;
if(d < epsilon) {
... emit p
return;
}
}
Як впливають різні сімейства GPU (Nvidia, ATI, PowerVR, Mali, Intel тощо)? Вершинні шейдери, але особливо фрагменти шейдери?
Як це можна оптимізувати?