diff --git a/osu.Game.Rulesets.Tau.Tests/osu.Game.Rulesets.Tau.Tests.csproj b/osu.Game.Rulesets.Tau.Tests/osu.Game.Rulesets.Tau.Tests.csproj
index dcbe9f10..5554f751 100644
--- a/osu.Game.Rulesets.Tau.Tests/osu.Game.Rulesets.Tau.Tests.csproj
+++ b/osu.Game.Rulesets.Tau.Tests/osu.Game.Rulesets.Tau.Tests.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerFade.fs b/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerFade.fs
index 9de6930a..598f5dbd 100644
--- a/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerFade.fs
+++ b/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerFade.fs
@@ -2,7 +2,7 @@
#include "sh_Masking.h"
#include "sh_TextureWrapping.h"
-layout(location = 5) in highp vec2 v_Position;
+layout(location = 7) in highp vec2 v_Position;
layout(location = 2) in mediump vec2 v_TexCoord;
layout(std140, set = 1, binding = 0) uniform m_visualizerParameters {
diff --git a/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerPositionAndColour.vs b/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerPositionAndColour.vs
index 45663a68..b00bf36b 100644
--- a/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerPositionAndColour.vs
+++ b/osu.Game.Rulesets.Tau/Resources/Shaders/sh_VisualizerPositionAndColour.vs
@@ -1,29 +1,35 @@
#include "sh_Utils.h"
+#include "Internal/sh_MaskingInfo.h"
layout(location = 0) in highp vec2 m_Position;
layout(location = 1) in lowp vec4 m_Colour;
layout(location = 2) in mediump vec2 m_TexCoord;
layout(location = 3) in mediump vec4 m_TexRect;
layout(location = 4) in mediump vec2 m_BlendRange;
+layout(location = 6) in int m_MaskingIndex;
layout(location = 0) out highp vec2 v_MaskingPosition;
layout(location = 1) out lowp vec4 v_Colour;
layout(location = 2) out mediump vec2 v_TexCoord;
layout(location = 3) out mediump vec4 v_TexRect;
layout(location = 4) out mediump vec2 v_BlendRange;
-layout(location = 5) out highp vec2 v_Position;
+layout(location = 5) flat out int v_MaskingIndex;
+layout(location = 6) out highp vec2 v_ScissorPosition;
+layout(location = 7) out highp vec2 v_Position;
+
void main(void)
{
- // Transform from screen space to masking space.
- highp vec3 maskingPos = g_ToMaskingSpace * vec3(m_Position, 1.0);
- v_MaskingPosition = maskingPos.xy / maskingPos.z;
+ // Transform from screen space to scissor space.
+ highp vec4 scissorPos = g_MaskingInfo.ToScissorSpace * vec4(m_Position, 1.0, 0.0);
+ v_ScissorPosition = scissorPos.xy / scissorPos.z;
v_Colour = m_Colour;
v_TexCoord = m_TexCoord;
v_TexRect = m_TexRect;
v_BlendRange = m_BlendRange;
v_Position = m_Position;
+ v_MaskingIndex = m_MaskingIndex;
gl_Position = g_ProjMatrix * vec4(m_Position, 1.0, 1.0);
-}
\ No newline at end of file
+}
diff --git a/osu.Game.Rulesets.Tau/osu.Game.Rulesets.Tau.csproj b/osu.Game.Rulesets.Tau/osu.Game.Rulesets.Tau.csproj
index d35d0824..8421c8b5 100644
--- a/osu.Game.Rulesets.Tau/osu.Game.Rulesets.Tau.csproj
+++ b/osu.Game.Rulesets.Tau/osu.Game.Rulesets.Tau.csproj
@@ -35,7 +35,7 @@
-
+