good progress, but no other compute pass yet

This commit is contained in:
2025-08-01 02:18:46 +03:00
parent a847f0cfda
commit 6e04bf27ff
4 changed files with 129 additions and 29 deletions

36
shaders/agents_cs.glsl Normal file
View File

@@ -0,0 +1,36 @@
#[compute]
#version 450
// Invocations in the (x, y, z) dimension
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
layout(r32f, set = 0, binding = 0) uniform restrict readonly image2D current_trail;
layout(r32f, set = 1, binding = 0) uniform restrict writeonly image2D output_trail;
layout(set = 2, binding = 1) restrict buffer AgentBuffer {
vec2 positions[];
} agent_buffer;
layout(push_constant, std430) uniform Params {
vec2 texture_size;
} params;
void main() {
ivec2 size = ivec2(params.texture_size.x - 1, params.texture_size.y - 1);
vec2 position = agent_buffer.positions[gl_GlobalInvocationID.x];
ivec2 uv = ivec2(gl_GlobalInvocationID.xy);
ivec2 tl = ivec2(0, 0);
float current_v = imageLoad(current_trail, clamp(uv - ivec2(0, 1), tl, size)).r;
float up_v = imageLoad(current_trail, clamp(uv - ivec2(0, 1), tl, size)).r;
float down_v = imageLoad(current_trail, clamp(uv + ivec2(0, 1), tl, size)).r;
float left_v = imageLoad(current_trail, clamp(uv - ivec2(1, 0), tl, size)).r;
float right_v = imageLoad(current_trail, clamp(uv + ivec2(1, 0), tl, size)).r;
float new_v = current_v + 0.05;
vec4 result = vec4(new_v, new_v, new_v, 1.0);
imageStore(output_trail, uv, result);
}