Как поместить массив изображений без привязки в UBO - PullRequest
0 голосов
/ 02 октября 2018

У меня уже есть UBO:

layout (std140, binding = 0) uniform view_shared_data {
    uniform int matrixIndex;
    uniform int projectionIndex;
    uniform uint set_only_input_id;
    uniform Matrices[MAX_MATRICES] matrices;
};

Я пытаюсь добавить массив изображений без привязки к UBO:

layout(bindless_image, r32ui) coherent uniform uimage2D[MAX_MATRICES] id_texture;

Я буду записывать только изображения с использованием imageAtomicMax().

Прекрасно компилируется в Windows, используя nvida gpu, но не в Linux, используя amd.Я предполагаю, что что-то не так с моими bindless_image, r32ui и связными квалификаторами, но я не уверен, как правильно их установить.

1 Ответ

0 голосов
/ 02 октября 2018

Если вы хотите поместить бесконечные изображения / сэмплеры в единый блок, вы должны поместить их в определения блока.Как и любая другая переменная:

layout (std140, binding = 0) uniform view_shared_data {
    uniform int matrixIndex;
    uniform int projectionIndex;
    uniform uint set_only_input_id;
    uniform Matrices[MAX_MATRICES] matrices;
    layout(r32ui) coherent uimage2D[MAX_MATRICES] id_texture;
};

Каждый непрозрачный тип в блоке интерфейса с буферной поддержкой представляет собой одно 64-разрядное целое число.Таким образом, шаг массива id_texture составляет 8 байтов, что соответствует массиву C или C ++ из 64-разрядных целых чисел.

...