Files
2026-03-06 14:32:25 +13:00

21 lines
640 B
GLSL

#version 330
layout(location = 0) in vec3 vertexPosition;
layout(location = 2) in vec3 vertexNormal;
uniform mat4 mvp;
uniform mat4 matModel;
uniform mat4 matNormal;
uniform float outlineThickness;
void main() {
// Transform normal to world space
vec3 worldNormal = normalize(vec3(matNormal * vec4(vertexNormal, 0.0)));
// Expand vertices along normals in world space
vec3 worldPos = vec3(matModel * vec4(vertexPosition, 1.0));
vec3 expandedPos = worldPos + worldNormal * outlineThickness;
// Transform to clip space
gl_Position = mvp * vec4(vertexPosition + vertexNormal * outlineThickness, 1.0);
}