21 lines
640 B
GLSL
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);
|
|
} |