Описание тега shader-storage-buffer

Объект буфера хранилища шейдеров (SSBO) - это индексированный объект буфера, доступный начиная с OpenGL 4.3. Его можно использовать для чтения / записи произвольно структурированных данных из шейдеров.
1 ответ

OpenGL 4.5 - хранение шейдеров: запись в вершинный шейдер, чтение во фрагментный шейдер

И мои фрагментные и вершинные шейдеры содержат следующие два парня: struct Light { mat4 view; mat4 proj; vec4 fragPos; }; layout (std430, binding = 0) buffer Lights { Light lights[]; }; Моя проблема в том, что это последнее поле, fragPos, вычисляетс…
0 ответов

OpenGL 4.5 - Расположение объектов буфера хранилища шейдеров

Я пробую свои силы в буферных объектах шейдерного хранилища (Buffer Blocks), и есть пара вещей, которые я до конца не понимаю. Я пытаюсь сохранить (упрощенные) данные неопределенного количества источников света. n в них, так что мой шейдер может пер…
1 ответ

Законно ли повторно использовать привязки для нескольких блоков хранения шейдеров?

Предположим, что у меня есть один буфер хранения шейдера и я хочу иметь несколько представлений, например, так: layout(std430,binding=0) buffer FloatView { float floats[]; }; layout(std430,binding=0) buffer IntView { int ints[]; }; Это законно GLSL?…
14 янв '16 в 13:43
1 ответ

Предоставление контейнеров C++ для OpenGL?

Я создал буферный объект хранилища шейдеров, чтобы передать информацию моему вершинному шейдеру. Он связан с буфером, содержащим одну структуру. Но есть проблема. Данные, которые я храню в этой структуре, это не простой массив, это std::vector, Вот …
27 июл '16 в 22:33
1 ответ

OpenGL: Как MAX_SHADER_STORAGE_BLOCK_SIZE связано с реальным пределом размера SSBO?

Просматривая документацию OpenGL, я предположил, что MAX_SHADER_STORAGE_BLOCK_SIZE - это фактический предел размера, который может иметь SSBO. На моем GPU это значение указано как 128 МБ. Тем не менее, он прекрасно работает для создания и использова…
11 мар '18 в 22:20
1 ответ

Массив структур в Compute Shader

Записывая простой вычислительный шейдер в OpenGL, чтобы понять, как он работает, я не могу получить желаемый результат. Я хочу передать моему вычислительному шейдеру массив структур colourStruct для окрашивания выходной текстуры. Я хотел бы иметь кр…
1 ответ

Ограничение размера ресурсов на шейдер в OpenGL 4.5

Я столкнулся со странной проблемой: у меня есть фрагментный шейдер, содержащий несколько одинаковых переменных (mat4, vec4), один sampler2D и гигантский SSBO (1GB-2GB). Для каждого типа переменных оно не превышает ограничение размера аппаратного обе…
17 июн '17 в 04:16
1 ответ

Получить мусор только из шейдерного хранилища?

Я связал shader storage buffer к shader storage block вот так GLuint index = glGetProgramResourceIndex(myprogram, GL_SHADER_STORAGE_BLOCK, name); glShaderStorageBlockBinding(myprogram, index, mybindingpoint); glBindBuffer(GL_SHADER_STORAGE_BUFFER, m…
1 ответ

Как получить тип sampler2D из объекта буфера хранилища шейдеров внутри шейдера?

Я пытаюсь получить переменную типа sampler2D в мои шейдеры без использования единой переменной. Вместо этого я хочу передать его, используя объект буфера хранилища шейдеров (SSBO). Какой тип переменной должен быть объявлен в структуре для передачи? …
21 янв '18 в 20:43
1 ответ

Возвращение данных из вычислительного шейдера

Я довольно новичок в opengl, и я оказался в ситуации, когда мне нужно получить данные из вычислительного шейдера, но, поскольку мне не хватает некоторых критических знаний, я не могу заставить их работать. Итак, я пришел сюда, чтобы вы могли дать мн…
0 ответов

GLSL: Передача буферного массива переменной длины в функцию

Я заинтересован в передаче массива переменной длины (прилагается SSBO) к функции, то есть: layout(std430) buffer ssbo { type buffer[]; }; void func(buffer) { buffer[...] } func(buffer); РЕДАКТИРОВАТЬ: спецификация расширения ясно заявляет, что это н…
27 апр '16 в 05:53
1 ответ

Указатель на структуру ввода Compute Shader

Еще раз у меня проблема с моим вычислительным шейдером... Я хотел бы передать структуру, содержащую указатель, в вычислительный шейдер. Это мой пример структуры: struct couleurStruct { float r; float g; float b; float a; float *x; }; Вот моя инициал…
1 ответ

Vulkan Buffer WorkGroupID не возвращает фактическое значение при большом количестве элементов

Создание буфера с pow(2, 24) и local_size_x = 64 для разметки входной квалификатор вернется WorkGroupID = 262143 что все в порядке из-за pow(2,24) / 64 - 1, это ноль индексируется. Однако, если мы увеличим глобальное измерение / нет элементов / разм…
21 дек '17 в 15:17
1 ответ

Буфер хранения только для чтения в OpenGL ES и Spir-V

В OpenGL ES Shading Language объект буфера хранилища шейдеров (SSBO) может быть украшен квалификатором readonly или же writeonly,Раздел 4.9 (Спецификаторы доступа к памяти) спецификации OpenGL ES Shading Language версии 3.1: Блоки хранения шейдеров,…
0 ответов

Как многократная буферизация может сделать программу быстрее

У меня есть вопрос о множественной буферизации в OpenGL. Например, у меня есть программа. Это делает следующие вещи: сделайте предварительный проход глубины и запишите некоторую информацию в буфер хранения шейдера. используйте данные в буфере хранил…
29 дек '17 в 05:23
1 ответ

Сделать буфер хранения шейдера доступным в разных шейдерных программах

Какой макет и привязку мне нужно сделать, чтобы (рабочий) буфер хранения шейдера читался во второй шейдерной программе? Я установил и заполнил SSBO, который успешно связал и использовал в геометрическом шейдере. Этот шейдер читает и пишет в этот SSB…
14 мар '19 в 17:57
1 ответ

Нужен ли мне барьер памяти между инициализацией хранилища SSBO и его заполнением?

У меня есть код выглядит так: uint ssboId; glGenBuffers(1, &ssboId); glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssboId); //initialize glBufferData(GL_SHADER_STORAGE_BUFFER, size, 0, GL_STATIC_DRAW); // memory barrier here? // glMemoryBarrier(GL_SHAD…
10 июн '19 в 09:44
1 ответ

Как я могу запросить выравнивание / шаг для структуры SSBO?

Я не уверен, какая структура структуры лучше всего подходит для моего приложения: shared, packed,std140, std430, Я не прошу объяснения каждому из них, эту информацию легко найти, просто трудно понять, какое влияние каждый из них окажет на совместимо…
0 ответов

Насколько доступны для совместного использования индексы точек привязки OpenGL между программами и типами буферов и когда мне нужно выполнять повторное связывание?

Объекты буфера хранилища шейдеров OpenGL должны быть привязаны к некоторому индексу точки привязки, а некоторый индекс блока хранилища шейдеров должен быть привязан к тому же индексу точки привязки, если этот блок должен использовать этот SSBO. Анал…
0 ответов

Недетерминированный SSBO имеет слишком маленький GL_BUFFER_DATA_SIZE после glBufferData

Кажется, у меня в буфере хранилища шейдеров есть недетерминированные данные. я использовал apitrace для проверки конечного автомата и заметил следующую последовательность вызовов функций в трассировке: glBindBuffer (GL_SHADER_STORAGE_BUFFER, 3); glB…