В OpenGL ES Shading Language объект буфера хранилища шейдеров (SSBO) может быть украшен квалификатором readonly
или writeonly
.
Раздел 4.9 (Спецификаторы доступа к памяти) из OpenGL ES Shading Language версия 3.1спецификация :
Блоки хранения шейдеров, переменные, объявленные в блоках хранения шейдеров, и переменные, объявленные как типы изображений (основные непрозрачные типы с ключевым словом «изображение»), могут быть дополнительно квалифицированы однимили более из следующих определителей памяти: ... (таблица указана)
Так что я могу иметь что-то в шейдере opengl es, например:
layout(std430, binding = 0) readonly buffer mybuffer {
a_struct_type myarray[]; //a_struct_type was defined before
};
Но какукажите только для чтения в spir-v?
В спецификации spir-v , раздел 3.18, квалификатор доступа, он говорит:
Используется OpTypeImageи OpTypePipe.
Означает ли это, что в spir-v SSBO нельзя указывать только для чтения?Я не думаю, что SSBO попадает в тип OpTypeImage или OpTypePipe.
---------------------------------------------
Resource Type | Storage Class | Type
---------------------------------------------
Storage Buffer| Uniform |
|----------------| OpTypeStruct
| Storage Buffer |
----------------------------------------------