Scene
{
int num_spheres;
int num_materials;
Sphere spheres[32];
Material materials[32];
};
Это в шейдере. У меня есть массив spheres который хранит координаты шаров. Но я его прям руками хардкожу размером в 32, и первым параметром говорю склько там реально шаров. Чтобы, когда я отрисовую шары рей трейсом, итерироваться num_spheres раз. А что если я захочу сделать 33 шара? Все сломается. Для этого надо идти в код шейдера и увеличивать размер больше. А вдруг я захочу только 1 шар таскать, зачем мне тогда все эти 32, как есть сейчас. Я так понимаю это будет медленно каждый раз через SSBO передавать так много всего
Делай несколько ssbo, каждый на массив
А лучше поместить сферу и материал в одну структуру, увеличив кэш мэтчинг
Разве не зависит от того, сколько материалов?
Обсуждают сегодня