TSR_ECS/main/shaders/basic_instanced.vs
2023-12-25 18:47:55 +01:00

34 lines
722 B
GLSL

#version 430 core
struct DrawCtx {
mat4 model;
vec4 color[4];
};
layout(std430, binding = 0) buffer InstanceBuffer {
DrawCtx instances[];
};
layout (location = 0) in vec3 a_position;
layout (location = 1) in vec2 a_texcoord;
layout (location = 2) in vec3 a_normal;
uniform mat4 u_vp;
// uniform mat4 u_model;
out vec3 v_fragpos;
out vec2 v_texcoord;
out vec3 v_normal;
void main() {
// uint index = gl_GlobalInvocationID.x;
mat4 u_model = instances[gl_InstanceID].model;
v_texcoord = a_texcoord;
v_normal = normalize(mat3(transpose(inverse(u_model))) * a_normal);
vec4 fragpos4 = u_model * vec4(a_position, 1.0);
v_fragpos = vec3(fragpos4);
gl_Position = u_vp * fragpos4;
}