diff --git a/osu.Game.Resources/Shaders/sh_CircularFlashlight.fs b/osu.Game.Resources/Shaders/sh_CircularFlashlight.fs index 84aafd5..27a7372 100644 --- a/osu.Game.Resources/Shaders/sh_CircularFlashlight.fs +++ b/osu.Game.Resources/Shaders/sh_CircularFlashlight.fs @@ -1,9 +1,10 @@ #include "sh_Flashlight.h" -vec4 getColourAt(vec2 diff, vec2 size, vec4 originalColour) +// highp precision is necessary for vertex positions to prevent catastrophic failure on GL_ES platforms +lowp vec4 getColourAt(highp vec2 diff, highp vec2 size, lowp vec4 originalColour) { - float dist = length(diff); - float flashlightRadius = length(size); + highp float dist = length(diff); + highp float flashlightRadius = length(size); return originalColour * vec4(1.0, 1.0, 1.0, smoothstep(flashlightRadius, flashlightRadius * smoothness, dist)); } \ No newline at end of file diff --git a/osu.Game.Resources/Shaders/sh_Flashlight.h b/osu.Game.Resources/Shaders/sh_Flashlight.h index 2189f11..b9157e8 100644 --- a/osu.Game.Resources/Shaders/sh_Flashlight.h +++ b/osu.Game.Resources/Shaders/sh_Flashlight.h @@ -1,20 +1,16 @@ -#ifdef GL_ES - precision mediump float; -#endif +varying highp vec2 v_Position; +varying lowp vec4 v_Colour; -varying vec2 v_Position; -varying vec4 v_Colour; +uniform highp vec2 flashlightPos; +uniform highp vec2 flashlightSize; -uniform vec2 flashlightPos; -uniform vec2 flashlightSize; - -uniform float flashlightDim; +uniform lowp float flashlightDim; const float smoothness = 1.1; -vec4 getColourAt(vec2, vec2, vec4); +lowp vec4 getColourAt(vec2, vec2, vec4); void main(void) { gl_FragColor = mix(getColourAt(flashlightPos - v_Position, flashlightSize, v_Colour), vec4(0.0, 0.0, 0.0, 1.0), flashlightDim); -} \ No newline at end of file +} diff --git a/osu.Game.Resources/Shaders/sh_RectangularFlashlight.fs b/osu.Game.Resources/Shaders/sh_RectangularFlashlight.fs index 8426ca7..6730fee 100644 --- a/osu.Game.Resources/Shaders/sh_RectangularFlashlight.fs +++ b/osu.Game.Resources/Shaders/sh_RectangularFlashlight.fs @@ -1,10 +1,10 @@ #include "sh_Flashlight.h" -vec4 getColourAt(vec2 diff, vec2 size, vec4 originalColour) +lowp vec4 getColourAt(highp vec2 diff, highp vec2 size, lowp vec4 originalColour) { diff = abs(diff); - float alpha = length(smoothstep(size, size * smoothness, diff)); + lowp float alpha = length(smoothstep(size, size * smoothness, diff)); return originalColour * vec4(1.0, 1.0, 1.0, alpha); -} \ No newline at end of file +}