diff --git a/osu.Game.Resources/Shaders/sh_DottedLine.fs b/osu.Game.Resources/Shaders/sh_DottedLine.fs new file mode 100644 index 0000000..099b2d1 --- /dev/null +++ b/osu.Game.Resources/Shaders/sh_DottedLine.fs @@ -0,0 +1,40 @@ +#ifdef GL_ES + precision mediump float; +#endif + +#include "sh_Utils.h" + +varying vec4 v_Colour; + +uniform vec2 g_Position; +uniform vec2 g_Size; + +uniform float g_Period; +uniform float g_PeriodOffset; + +uniform float g_StrokeWidth; +uniform float g_StrokeHeight; +uniform float g_Separation; + +void main(void) +{ + float xVisible = mod(gl_FragCoord.x, g_StrokeWidth + g_Separation); + + if (xVisible > g_StrokeWidth) + { + gl_FragColor = vec4(0.0); + return; + } + + // Normalized + float normalizedY = gl_FragCoord.y - g_Position.y; + float yVisible = abs(normalizedY - ((g_Size.y / 2.0 - g_StrokeHeight / 2.0) * sin(g_Period / g_Size.x * gl_FragCoord.x + g_PeriodOffset) + g_Size.y / 2.0)); + + if (yVisible > g_StrokeHeight / 2.0) + { + gl_FragColor = vec4(0.0); + return; + } + + gl_FragColor = toSRGB(v_Colour); +} \ No newline at end of file diff --git a/osu.Game.Resources/osu.Game.Resources.csproj b/osu.Game.Resources/osu.Game.Resources.csproj index df0d745..85255c1 100644 --- a/osu.Game.Resources/osu.Game.Resources.csproj +++ b/osu.Game.Resources/osu.Game.Resources.csproj @@ -588,6 +588,9 @@ + + +