Explicitly define precision for all variables, fall back to medium precision

master
David Zhao 6 years ago
parent d58ad077c8
commit 96286f8c6f

@ -1,10 +1,10 @@
#include "sh_Flashlight.h" #include "sh_Flashlight.h"
// highp precision is necessary for vertex positions to prevent catastrophic failure on GL_ES platforms // highp precision is necessary for vertex positions to prevent catastrophic failure on GL_ES platforms
vec4 getColourAt(highp vec2 diff, highp vec2 size, lowp vec4 originalColour) lowp vec4 getColourAt(highp vec2 diff, highp vec2 size, lowp vec4 originalColour)
{ {
float dist = length(diff); highp float dist = length(diff);
float flashlightRadius = length(size); highp float flashlightRadius = length(size);
return originalColour * vec4(1.0, 1.0, 1.0, smoothstep(flashlightRadius, flashlightRadius * smoothness, dist)); return originalColour * vec4(1.0, 1.0, 1.0, smoothstep(flashlightRadius, flashlightRadius * smoothness, dist));
} }

@ -1,5 +1,9 @@
#ifdef GL_ES #ifdef GL_ES
precision mediump float; precision mediump float;
// Not all GPUs support high precision, so we should fall back to medium precision.
#ifndef GL_FRAGMENT_PRECISION_HIGH
#define highp
#endif
#else #else
// Since glsl 1.1 doesn't define precision qualifiers but GL_ES does, // Since glsl 1.1 doesn't define precision qualifiers but GL_ES does,
// Define them as nothing to avoid compilation issues. // Define them as nothing to avoid compilation issues.
@ -7,17 +11,20 @@
#define highp #define highp
#endif #endif
varying vec2 v_Position;
varying vec4 v_Colour;
uniform vec2 flashlightPos;
uniform vec2 flashlightSize;
uniform float flashlightDim;
varying highp vec2 v_Position;
varying lowp vec4 v_Colour;
uniform highp vec2 flashlightPos;
uniform highp vec2 flashlightSize;
uniform lowp float flashlightDim;
const float smoothness = 1.1; const float smoothness = 1.1;
vec4 getColourAt(vec2, vec2, vec4); lowp vec4 getColourAt(vec2, vec2, vec4);
void main(void) void main(void)
{ {

Loading…
Cancel
Save