Merge pull request #66 from nyquillerium/highp-flashlight
Fix loss of precision for flashlight smoothing distance calculationsmaster
commit
f6d3057dcc
@ -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));
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue