This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/gpu/shaders/gpu_shader_2D_nodelink_frag.glsl
Dalai Felinto b1e6e63c22 Cleanup: Geometry Nodes dashed lines
No functional change, just cleaning up the shader code a bit.

Part of this is removing dead code (the discard was never called), and
part is shuffling mix/max around based on feedback by Sybren Stüvel.
2021-10-05 15:38:09 +02:00

39 lines
1.0 KiB
GLSL

in float colorGradient;
in vec4 finalColor;
in float lineU;
flat in float lineLength;
flat in float dashFactor;
flat in int isMainLine;
out vec4 fragColor;
#define DASH_WIDTH 20.0
#define ANTIALIAS 1.0
void main()
{
fragColor = finalColor;
if ((isMainLine != 0) && (dashFactor < 1.0)) {
float distance_along_line = lineLength * lineU;
float normalized_distance = fract(distance_along_line / DASH_WIDTH);
/* Checking if `normalized_distance <= dashFactor` is already enough for a basic
* dash, however we want to handle a nice antialias. */
float dash_center = DASH_WIDTH * dashFactor * 0.5;
float normalized_distance_triangle =
1.0 - abs((fract((distance_along_line - dash_center) / DASH_WIDTH)) * 2.0 - 1.0);
float t = ANTIALIAS / DASH_WIDTH;
float slope = 1.0 / (2.0 * t);
float unclamped_alpha = 1.0 - slope * (normalized_distance_triangle - dashFactor + t);
float alpha = max(0.0, min(unclamped_alpha, 1.0));
fragColor.a *= alpha;
}
fragColor.a *= smoothstep(1.0, 0.1, abs(colorGradient));
}