/* Outline shader
 * Adapted from https://godotshaders.com/shader/pixel-perfect-outline-shader/
 */
shader_type spatial;
render_mode cull_front, unshaded;

uniform vec4 color: source_color;
uniform float width = 1.0;

void vertex() {
	vec4 clip_position = PROJECTION_MATRIX * (MODELVIEW_MATRIX * vec4(VERTEX, 1.0));
	vec3 clip_normal = mat3(PROJECTION_MATRIX) * (mat3(MODELVIEW_MATRIX) * NORMAL);

	vec2 offset = normalize(clip_normal.xy) / VIEWPORT_SIZE * clip_position.w * width * 2.0;

	clip_position.xy += offset;
	POSITION = clip_position;
}

void fragment() {
	ALBEDO = color.rgb;
	if (color.a < 1.0) {
		ALPHA = color.a;
	}
}
