Какая польза от скаляра спецификатора макета в EXT_scalar_block_layout?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Какая польза от скаляра спецификатора макета в EXT_scalar_block_layout?

Сообщение Anonymous »

Вопрос

Какое использование скалярного спецификатора макета при доступе к буферу хранения в GL_EXT_scalar_block_layout? (см. пример ниже)

Какой вариант использования скалярного значения?

Background< /h1>

Недавно я запрограммировал простой Raytracer с использованием Vulkan и расширения NVidias VkRayTracing и следовал этому руководству. В разделе о шейдере ближайшего попадания требуется доступ к некоторым данным, которые хранятся в буферах хранения (с флагами использования vk::BufferUsageFlagBits::eStorageBuffer).

В шейдере используется расширение GL_EXT_scalar_block_layout и доступ к этим буферам осуществляется следующим образом:

Код: Выделить всё

layout(binding = 4, set = 1, scalar) buffer Vertices { Vertex v[]; } vertices[];
Когда я впервые использовал этот код, уровни проверки сказали мне, что структуры, такие как Vertex, имеют недопустимый макет, поэтому я изменил их, чтобы каждый элемент был выровнен по Блоки по 16 байт:

Код: Выделить всё

struct Vertex {
vec4 position;
vec4 normal;
vec4 texCoord;
};
с соответствующей структурой в C++:

Код: Выделить всё

#pragma pack(push, 1)
struct Vertex {
glm::vec4 position_1unused;
glm::vec4 normal_1unused;
glm::vec4 texCoord_2unused;
};
#pragma pack(pop)
Ошибки исчезли и я получил рабочий Raytracer. Но я до сих пор не понимаю, почему здесь используется ключевое слово скаляр. Я нашел этот документ, в котором говорится о расширении GL_EXT_scalar_block_layout, но я действительно этого не понимаю. Наверное, я просто не привык к терминологии glsl? Я не вижу причин, по которым мне пришлось бы использовать это.

Кроме того, я просто попытался удалить скаляр, и он все равно работал без каких-либо изменений, предупреждения или ошибки вообще. Был бы признателен за любые разъяснения или дополнительные ресурсы по этой теме.

Подробнее здесь: https://stackoverflow.com/questions/605 ... ock-layout
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Php
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Apache
    0 Ответы
    115 Просмотры
    Последнее сообщение Anonymous
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Php
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Block Block Block Block Block Разрешить доступ к списку указанных под папков
    Anonymous » » в форуме Php
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Меня смущают «Политика макета» MDSpans, «Картирование макета» и «Политика картирования макета»
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»