aboutsummaryrefslogtreecommitdiff
path: root/game/src/Game/Theme/PieChart/PieChart.gdshader
diff options
context:
space:
mode:
Diffstat (limited to 'game/src/Game/Theme/PieChart/PieChart.gdshader')
-rw-r--r--game/src/Game/Theme/PieChart/PieChart.gdshader87
1 files changed, 0 insertions, 87 deletions
diff --git a/game/src/Game/Theme/PieChart/PieChart.gdshader b/game/src/Game/Theme/PieChart/PieChart.gdshader
deleted file mode 100644
index 1707b3d..0000000
--- a/game/src/Game/Theme/PieChart/PieChart.gdshader
+++ /dev/null
@@ -1,87 +0,0 @@
-shader_type canvas_item;
-
-// The center in UV coordinates, which will always
-//be 0.5, the actual radius will be controlled by the control node
-//const vec2 center = vec2(0.5,0.5);
-uniform float radius = 0.4;
-
-//shadow
-uniform vec2 shadow_displacement = vec2(0.75,0.75);
-uniform float shadow_tightness = 10;
-uniform float shadow_radius = 0.7;
-uniform float shadow_thickness = 1.0;
-
-// Control of the slices
-uniform float stopAngles[5];
-uniform vec3 colours[5];
-
-// Trim
-uniform vec3 trim_colour;
-uniform float trim_size = 0.05;
-
-// The center is spotlighted by the gradient,
-//control its size and falloff with these
-uniform float gradient_falloff = 3.6;
-uniform float gradient_base = 3.1;
-
-// control whether this is a donut instead of a pie chart
-uniform bool donut = false;
-uniform bool donut_inner_trim = false;
-uniform float donut_inner_radius = 0.15;
-
-// get the polar coordinates of a pixel relative to the center
-vec2 getPolar(vec2 UVin, vec2 center){
- vec2 relcoord = (UVin-center);
- float dist = length(relcoord);
- float theta = PI/2.0 + atan((relcoord.y)/(relcoord.x));
- if(UVin.x < 0.5){
- theta += PI;
- }
- return vec2(dist,theta);
-}
-
-// from thebookofshaders, returns a gradient falloff
-float parabola( float base, float x, float k ){
- return pow( base*x*(1.0-x), k );
-}
-
-float parabola_shadow(float base, float x){
- return base*x*x;
-}
-
-void fragment() {
- vec2 coords = getPolar(UV,vec2(0.5,0.5));
- float dist = coords.x;
- float theta = coords.y;
-
- vec2 shadow_polar = getPolar(UV,vec2(0.0+shadow_displacement.x,0.0+shadow_displacement.y));
- float shadow_peak = radius+(radius-donut_inner_radius)/2.0;
- float shadow_gradient = shadow_thickness+parabola_shadow(shadow_tightness*-10.0,shadow_polar.x+shadow_peak-shadow_radius);
-
- // inner hole of the donut => make it transparent
- if(donut && dist <= donut_inner_radius){
- COLOR = vec4(0.1,0.1,0.1,shadow_gradient);
- }
- // inner trim
- else if(donut && donut_inner_trim && dist <= donut_inner_radius + trim_size){
- COLOR = vec4(trim_colour,1.0);
- }
- // interior
- else if(dist <= radius-trim_size){
- for(int i=0;i<stopAngles.length();i++){
- if(theta <= stopAngles[i]){
- float gradient = parabola(gradient_base,dist,gradient_falloff);
- COLOR = vec4(colours[i]*(1.0-gradient),1.0);
- break;
- }
- }
- }
- // outer trim
- else if(dist <= radius){
- COLOR = vec4(trim_colour,1.0);
- }
- //outside the circle
- else{
- COLOR = vec4(0.1,0.1,0.1,shadow_gradient);
- }
-} \ No newline at end of file