34 lines
722 B
GLSL
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;
|
|
} |