44 lines
955 B
GLSL
44 lines
955 B
GLSL
// Basic Texture Shader
|
|
|
|
#type vertex
|
|
#version 430 core
|
|
|
|
layout(location = 0) in vec3 a_WorldPosition;
|
|
layout(location = 1) in float a_Thickness;
|
|
layout(location = 2) in vec2 a_LocalPosition;
|
|
layout(location = 3) in vec4 a_Color;
|
|
uniform mat4 u_ViewProjection;
|
|
|
|
out vec2 v_LocalPosition;
|
|
out float v_Thickness;
|
|
out vec4 v_Color;
|
|
|
|
void main()
|
|
{
|
|
v_LocalPosition = a_LocalPosition;
|
|
v_Thickness = a_Thickness;
|
|
v_Color = a_Color;
|
|
gl_Position = u_ViewProjection * vec4(a_WorldPosition, 1.0);
|
|
}
|
|
|
|
#type fragment
|
|
#version 430 core
|
|
|
|
layout(location = 0) out vec4 color;
|
|
|
|
in vec2 v_LocalPosition;
|
|
in float v_Thickness;
|
|
in vec4 v_Color;
|
|
|
|
void main()
|
|
{
|
|
float fade = 0.01;
|
|
float dist = sqrt(dot(v_LocalPosition, v_LocalPosition));
|
|
if (dist > 1.0 || dist < 1.0 - v_Thickness - fade)
|
|
discard;
|
|
|
|
float alpha = 1.0 - smoothstep(1.0f - fade, 1.0f, dist);
|
|
alpha *= smoothstep(1.0 - v_Thickness - fade, 1.0 - v_Thickness, dist);
|
|
color = v_Color;
|
|
color.a = alpha;
|
|
} |