Пытаюсь кое-что сделать с compute shaders и появляется вопрос - как передать шейдеру большое количество объектов. Если я правильно понимаю, количество SSBO ограничено GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS (72 в случае моей интеловстройки). (а за что тогда отвечает GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS !?)
Все это осложняется тем, что объекты у меня могут занимать от 4-х байт (теоретический и практический минимум) до 74-х мегабайт.
Еще одна проблема - адресация этих объектов. Каждый из них имеет координату в трехмерном пространстве по которой он должен быть доступен. Как подобное прикрутить к GLSL в котором даже указателей нет - вопрос. К слову, объекты могут быть R/O для шейдера, в них ничего он не пишет, только читает.
Пока что у меня есть пара идей:
- Рассовывать объекты в UBO и SSBO одновременно в зависимости от их размера (почти половина объектов может влезть в 64кБ, в 16кБ влезет только треть)
- Динамически генерировать, компилировать (glCompileShader) и линковать с основным шейдером прослойку, которая будет знать обо всех загруженных объектах и предоставлять к ним доступ. Как это эффективно сделать когда нет указателей - вопрос...
Прошу понять, простить идиота, и помочь советом. Доки на khronos.org читал, но не понял.
P.S. объекты являются разреженными октодеревьями, но это, ИМХО, не влияет на проблему.