Как расставить шейдером вектор точек/частиц

Я пишу на C++ в связке с OpenGL (glsl). Задача такая: у меня есть набор точек и либо эти точки вычисляют фрагменты шейдера, либо я их имею на части кода CPU и передаю в шейдер. Меня интересует, есть ли способ отобразить эти точки кроме способа, где каждый фрагмент проверяет свою причастность для каждой из точки/частицы, и в случае успеха закрашивает. Так я не получу никакого прироста производительности, да и придётся выгружать данные с видеопамяти в память процессора. Т.е. хочется иметь возможность в фрагменте менять соседние данные текстур, а не только out type FragColor. Я понимаю, что проблема в конвейере и параллельности вычисления кода у видеокарт, но неужели нельзя просто решать конфликты между перезаписью какого-то числа с помощью битовых масок, или суммирования вместо перезаписи? (может как-то через layout и дополнительные текстуры) Подобного рода не графические вычисления можно делать на CUDA и т.п., но мне хочется сохранить простату проекта с вычислением клеточных автоматов на glsl файлах с открытым кодом.


Ответы (0 шт):