#version 450 #extension GL_GOOGLE_include_directive : require layout(local_size_x = 64) in; #include "common.glsl" // Remembers the entity positions before a tick: sprites, projectiles and particles are drawn between the last two ticks. struct Ent { vec4 a, box, mv, ai; ivec4 st; vec4 hp; ivec4 x; ivec4 rg; ivec4 rg2; ivec4 aux; vec4 ex; vec4 ex2; ivec4 ex3; vec4 ex4; vec4 ex5; vec4 ex6; vec4 ex7; ivec4 ex8; vec4 ex9; vec4 ex10; vec4 ex11; vec4 ex12, ex13, ex14, ex15, ex16, ex17, ex18, ex19; }; layout(std430, set = 0, binding = 22) readonly buffer Ents { Ent ents[]; }; layout(std430, set = 0, binding = 23) readonly buffer Ctrl { ivec4 inp; } ctrl; layout(std430, set = 0, binding = 39) buffer EntPrevW { vec4 prevw[]; }; void main() { uint i = gl_GlobalInvocationID.x; if (i >= uint(ctrl.inp.w)) return; prevw[i] = ents[i].a; // rigid bodies also need their previous angle }