Описание тега 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, вычисляетс…
01 авг '17 в 21:03
0
ответов
OpenGL 4.5 - Расположение объектов буфера хранилища шейдеров
Я пробую свои силы в буферных объектах шейдерного хранилища (Buffer Blocks), и есть пара вещей, которые я до конца не понимаю. Я пытаюсь сохранить (упрощенные) данные неопределенного количества источников света. n в них, так что мой шейдер может пер…
26 июл '17 в 04:56
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 для окрашивания выходной текстуры. Я хотел бы иметь кр…
15 фев '17 в 16:40
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…
27 май '16 в 22:36
1
ответ
Как получить тип sampler2D из объекта буфера хранилища шейдеров внутри шейдера?
Я пытаюсь получить переменную типа sampler2D в мои шейдеры без использования единой переменной. Вместо этого я хочу передать его, используя объект буфера хранилища шейдеров (SSBO). Какой тип переменной должен быть объявлен в структуре для передачи? …
21 янв '18 в 20:43
1
ответ
Возвращение данных из вычислительного шейдера
Я довольно новичок в opengl, и я оказался в ситуации, когда мне нужно получить данные из вычислительного шейдера, но, поскольку мне не хватает некоторых критических знаний, я не могу заставить их работать. Итак, я пришел сюда, чтобы вы могли дать мн…
13 ноя '16 в 11:18
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; }; Вот моя инициал…
22 фев '17 в 16:16
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: Блоки хранения шейдеров,…
21 фев '19 в 05:41
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, Я не прошу объяснения каждому из них, эту информацию легко найти, просто трудно понять, какое влияние каждый из них окажет на совместимо…
09 июн '19 в 08:28
0
ответов
Насколько доступны для совместного использования индексы точек привязки OpenGL между программами и типами буферов и когда мне нужно выполнять повторное связывание?
Объекты буфера хранилища шейдеров OpenGL должны быть привязаны к некоторому индексу точки привязки, а некоторый индекс блока хранилища шейдеров должен быть привязан к тому же индексу точки привязки, если этот блок должен использовать этот SSBO. Анал…
12 сен '19 в 13:04
0
ответов
Недетерминированный SSBO имеет слишком маленький GL_BUFFER_DATA_SIZE после glBufferData
Кажется, у меня в буфере хранилища шейдеров есть недетерминированные данные. я использовал apitrace для проверки конечного автомата и заметил следующую последовательность вызовов функций в трассировке: glBindBuffer (GL_SHADER_STORAGE_BUFFER, 3); glB…
12 сен '19 в 17:09