32 lines
1.0 KiB
GLSL
32 lines
1.0 KiB
GLSL
#pragma header
|
|
#define PI 3.14159265359
|
|
|
|
int steps = 16;
|
|
int stepsInside = 2;
|
|
float strength = 0.0075;
|
|
vec4 getColor(vec2 pos) {
|
|
if (pos.x < 0) pos.x = 0;
|
|
else if (pos.x > 1.0 - (1.0 / openfl_TextureSize.x)) pos.x = 1.0 - (1.0 / openfl_TextureSize.x);
|
|
if (pos.y < 0) pos.y = 0;
|
|
else if (pos.y > 1.0 - (1.0 / openfl_TextureSize.y)) pos.y = 1.0 - (1.0 / openfl_TextureSize.y);
|
|
// return textureCam(bitmap, pos);
|
|
return flixel_texture2D(bitmap, pos);
|
|
}
|
|
void main() {
|
|
// vec2 camPos = getCamPos(openfl_TextureCoordv);
|
|
vec2 camPos = openfl_TextureCoordv;
|
|
if (camPos.x < 0 || camPos.x > 1 || camPos.y < 0 || camPos.y > 1)
|
|
return;
|
|
|
|
vec4 color = getColor(camPos);
|
|
float fsteps = steps;
|
|
for(float inside = 1; inside < stepsInside+1; inside++) {
|
|
for(int i = 0; i < steps; i++) {
|
|
float fi = i;
|
|
color += getColor(camPos + vec2(strength * (inside / stepsInside) * cos(fi / fsteps * (PI * 2.0)), strength * (inside / stepsInside) * sin(fi / fsteps * (PI * 2.0))));
|
|
}
|
|
}
|
|
|
|
color /= steps * stepsInside;
|
|
gl_FragColor = color;
|
|
} |