Merge pull request #47 from jorolf/flashlight-shader

Split flashlight shader and make use of more inbuilt functions
master
Dan Balasescu 7 years ago committed by GitHub
commit 694cb03f19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,9 @@
#include "sh_Flashlight.h"
vec4 getColourAt(vec2 diff, vec2 size, vec4 originalColour)
{
float dist = length(diff);
float flashlightRadius = length(size);
return originalColour * vec4(1.0, 1.0, 1.0, smoothstep(flashlightRadius, flashlightRadius * smoothness, dist));
}

@ -1,34 +0,0 @@
#ifdef GL_ES
precision mediump float;
#endif
varying vec2 v_Position;
varying vec4 v_Colour;
uniform bool rectangular;
uniform vec2 flashlightPos;
uniform float circularFlashlightSize;
uniform vec2 rectangularFlashlightSize;
const float smoothness = 1.1;
void main(void)
{
if(rectangular)
{
vec2 diff = abs(v_Position - flashlightPos);
float alpha = 1.0 - smoothstep(rectangularFlashlightSize.x, rectangularFlashlightSize.x * smoothness, diff.x);
alpha *= 1.0 - smoothstep(rectangularFlashlightSize.y, rectangularFlashlightSize.y * smoothness, diff.y);
gl_FragColor = v_Colour * vec4(1.0, 1.0, 1.0, 1.0 - alpha);
}
else
{
vec2 diff = flashlightPos - v_Position;
float dist = sqrt(diff.x * diff.x + diff.y * diff.y);
gl_FragColor = v_Colour * vec4(1.0, 1.0, 1.0, smoothstep(circularFlashlightSize, circularFlashlightSize * smoothness, dist));
}
}

@ -0,0 +1,18 @@
#ifdef GL_ES
precision mediump float;
#endif
varying vec2 v_Position;
varying vec4 v_Colour;
uniform vec2 flashlightPos;
uniform vec2 flashlightSize;
const float smoothness = 1.1;
vec4 getColourAt(vec2, vec2, vec4);
void main(void)
{
gl_FragColor = getColourAt(flashlightPos - v_Position, flashlightSize, v_Colour);
}

@ -0,0 +1,10 @@
#include "sh_Flashlight.h"
vec4 getColourAt(vec2 diff, vec2 size, vec4 originalColour)
{
diff = abs(diff);
float alpha = length(smoothstep(size, size * smoothness, diff));
return originalColour * vec4(1.0, 1.0, 1.0, alpha);
}
Loading…
Cancel
Save