У меня есть геометрический шейдер со следующим нажимным постоянным блоком:Нажимать постоянный предел в геометрическом шейдере?
layout(push_constant) uniform Instance {
mat4 VP;
vec3 posCam;
float radius;
float curvature;
} u_instance;
Нажимными константы определены в макете трубопровода, как это:
uint32_t offset = 0;
uint32_t size = 21 *sizeof(float);
vk::PushConstantRange range {vk::ShaderStageFlagBits::eGeometry,offset,size};
Однако Vulkan слоев проверки бросить эту ошибку:
Push constant range covering variable starting at offset 0 not accessible from stage VK_SHADER_STAGE_GEOMETRY_BIT
Что здесь означает «недоступно»? Почему бы им не быть доступными? Если я перемещаю push-константы на другой этап (например, фрагмент или вершинный шейдер), ошибка не возникает.
Кроме того, я получаю эту ошибку только от Nvidia GeForce GTX 650 Ti. Я также пробовал это на карте AMD, которая отлично работала.
Есть ли какое-то ограничение на константы толчка для геометрических шейдеров? Я проверил ограничения для моего графического ядра Nvidia, общий максимальный размер постоянного тока - 256 байтов, и поддерживаются геометрические шейдеры. Я также ничего не могу найти в спецификации Вулкана.