From 31457b8cb65c6a08ec1d5869274ebf19d614e946 Mon Sep 17 00:00:00 2001 From: Sean Pringle Date: Tue, 21 Jul 2020 09:39:38 +1000 Subject: [PATCH] example instanced shader --- .../glsl330/base_lighting_instanced.vs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 examples/shaders/resources/shaders/glsl330/base_lighting_instanced.vs diff --git a/examples/shaders/resources/shaders/glsl330/base_lighting_instanced.vs b/examples/shaders/resources/shaders/glsl330/base_lighting_instanced.vs new file mode 100644 index 000000000..5e5430b3f --- /dev/null +++ b/examples/shaders/resources/shaders/glsl330/base_lighting_instanced.vs @@ -0,0 +1,36 @@ +#version 330 + +// Input vertex attributes +in vec3 vertexPosition; +in vec2 vertexTexCoord; +in vec3 vertexNormal; +in vec4 vertexColor; + +layout (location = 12) in mat4 instance; + +// Input uniform values +uniform mat4 mvp; + +// Output vertex attributes (to fragment shader) +out vec3 fragPosition; +out vec2 fragTexCoord; +out vec4 fragColor; +out vec3 fragNormal; + +// NOTE: Add here your custom variables + +void main() +{ + // Send vertex attributes to fragment shader + fragPosition = vec3(instance * vec4(vertexPosition, 1.0)); + fragTexCoord = vertexTexCoord; + fragColor = vertexColor; + + mat3 normalMatrix = transpose(inverse(mat3(instance))); + fragNormal = normalize(normalMatrix * vertexNormal); + + mat4 mvpi = mvp * instance; + + // Calculate final vertex position + gl_Position = mvpi * vec4(vertexPosition, 1.0); +}