6f4aa54131
D3D11 and GL (4.3+, ES 3.1+) will come separately at a later time. Change-Id: If30f2f3d062fa27e57e9912674669225b82a7b93 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
42 lines
692 B
Plaintext
42 lines
692 B
Plaintext
#version 440
|
|
|
|
layout (local_size_x = 256) in;
|
|
|
|
struct Data
|
|
{
|
|
vec2 pos;
|
|
float dir;
|
|
};
|
|
|
|
layout(std140, binding = 0) buffer StorageBuffer
|
|
{
|
|
Data d[];
|
|
} buf;
|
|
|
|
layout(std140, binding = 1) uniform UniformBuffer
|
|
{
|
|
float step;
|
|
uint count;
|
|
} ubuf;
|
|
|
|
void main()
|
|
{
|
|
uint index = gl_GlobalInvocationID.x;
|
|
if (index < ubuf.count) {
|
|
vec2 p = buf.d[index].pos;
|
|
float dir = buf.d[index].dir;
|
|
|
|
p.x += dir * ubuf.step * 0.01;
|
|
if (p.x > 1.0) {
|
|
p.x = 1.0;
|
|
buf.d[index].dir *= -1.0;
|
|
}
|
|
if (p.x < -1.0) {
|
|
p.x = -1.0;
|
|
buf.d[index].dir *= -1.0;
|
|
}
|
|
|
|
buf.d[index].pos = p;
|
|
}
|
|
}
|