SSBOs - Interleaved vs Separate Buffer Objects

Started by
-1 comments, last by kloffy 8 years, 6 months ago
I was wondering what the recommended way of using SSBOs is, e.g. if you want to share vertex data on the GPU between compute and regular shaders. Would you typically use one interleaved buffer, i.e.:

[source=c]struct Vertex
{
vec4 position;
vec2 tex_coord;
vec4 color;
};

layout(binding = 0) buffer VertexDataIn {
Vertex vertex[];
} cs_in;[/source]

Or use separate buffers, i.e.:

[source=c]layout(binding = 0) buffer PositionDataIn { vec4 position[]; } cs_position_in;
layout(binding = 1) buffer TexCoordDataIn { vec2 tex_coord[]; } cs_tex_coord_in;
layout(binding = 2) buffer ColorDataIn { vec4 color[]; } cs_color_in;[/source]

In my shaders, I tended towards using separate VBOs, mainly because they can be updated independently. However, with SSBOs the latter usage seems a bit awkward. Any experiences/recommendataions?

This topic is closed to new replies.

Advertisement