У меня проблема с настройкой двух буферов для моих шейдеров.Я хотел использовать Compute Shader, но проблема уже начинается в Vertex Shader.
Что я хочу : два отдельных SSBO с частицами внутри, которые я могу вращать и перемещать по отдельности.
Как я хочу начать : Просто поместите начальные значения в VAO, скопируйте их в SSBO в вершинном шейдере и обработайте их в компьютерных шейдерах.
Проблема : Оба VAO созданы одинаково, а значения равны.Однако, когда я хочу скопировать значения в SSBO, разрывы VAO и только 512 значений (что составляет половину количества элементов) являются правильными, а другие частично имеют странные разные значения, что я вижу из RenderDoc.
Взгляните на мое приложение1021 *
#version 460
#extension GL_ARB_separate_shader_objects : enable
#define WORK_GROUP_SIZE 128
layout (local_size_x = WORK_GROUP_SIZE) in;
// ---- UNIFORM ---------------------------------
layout(std430, binding = 6) buffer grid_vortex1_block
{
vec4 gridVortex1[];
};
layout(std430, binding = 7) buffer grid_vortex2_block
{
vec2 gridVortex2[];
};
void main()
{
uint INDEX = gl_GlobalInvocationID.x;
// THIS OPERATION SCREWS UP EVERYTHING IN THE BUFFER, as you can see in pic3
gridVortex1[INDEX].xy += 0.2f;
gridVortex1[INDEX].xy -= 0.2f;
}
Следующие два изображения показывают результат.Во-первых, правильная сетка (например, вихрь 1, еще не вращается), во-вторых, половина исчезает после одного кадра для вихря 2.
Спасибо за вашу помощь.