generated from krampus/template-godot4
26 lines
633 B
Plaintext
26 lines
633 B
Plaintext
/* 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;
|
|
}
|
|
}
|