0.00
60.0 fps

Radial Shine

a rotatable radial shine.

Godot version: godotshaders.com/shader/radial-shine-ver-1-0/

Log in to post a comment.

#version 300 es
precision highp float;


uniform float iTime;
uniform vec2  iResolution;

uniform float shine_num; // value=8, min=0, max=50, step=1
uniform float rotation_speed; // value=3, min=0, max=50, step=0.01
uniform float light_magnitude; // value=2, min=0, max=50, step=0.01
uniform float de_magnitude; // value=0, min=0, max=1, step=0.01

uniform float isCutAndFilter; // value=1., min=0, max=1, step=1. (false, true)

uniform float filter_distence; // value=1, min=0, max=1, step=0.01
uniform float filter_magnitude; // value=1, min=0, max=1, step=0.01
uniform float filter_minv; // value=0.75, min=0, max=1, step=0.01

uniform float cut_outer_radius; // value=0.6, min=0, max=3, step=0.01
uniform float cut_inner_radius; // value=0.1, min=0, max=1, step=0.01

uniform vec3 color;// value=1,1,1

out vec4 fragColor;

void main() {

    vec2 UV = gl_FragCoord.xy/iResolution.xy;

    UV.x *= iResolution.x/iResolution.y;

    UV = (UV - 0.5)*2.;
    UV.x += (iResolution.x - iResolution.x*(iResolution.x/iResolution.y))/iResolution.x;

	float ang = atan(UV.x, UV.y);
    float r = distance(UV, vec2(0,0));
    float demag = exp(pow(r, 5.))*de_magnitude;

	fragColor.rgb = color*vec3(abs(sin(ang*shine_num*0.5 + iTime*rotation_speed))) - demag;

	fragColor.a = ((1.0 - filter_distence*0.5) - r*filter_magnitude)*light_magnitude - demag;

	if (((r > cut_outer_radius) || (r < cut_inner_radius) || (fragColor.r < filter_minv) && (fragColor.g < filter_minv) && (fragColor.b < filter_minv)) && bool(isCutAndFilter)) {

		fragColor.rgba = vec4(0.0);
	}
}