diff options
Diffstat (limited to 'servers/visual/rasterizer/shaders/canvas_occlusion_fix.glsl')
-rw-r--r-- | servers/visual/rasterizer/shaders/canvas_occlusion_fix.glsl | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/servers/visual/rasterizer/shaders/canvas_occlusion_fix.glsl b/servers/visual/rasterizer/shaders/canvas_occlusion_fix.glsl deleted file mode 100644 index 7c9651201e..0000000000 --- a/servers/visual/rasterizer/shaders/canvas_occlusion_fix.glsl +++ /dev/null @@ -1,99 +0,0 @@ -/* clang-format off */ -[vertex] -/* clang-format on */ - -#version 450 - -layout(location = 0) out highp float u; - -void main() { - - if (gl_VertexIndex==0) { - u=0.0; - gl_Position=vec4(-1.0,-1.0,0.0,1.0); - } else if (gl_VertexIndex==1) { - u=0.0; - gl_Position=vec4(-1.0,1.0,0.0,1.0); - } else if (gl_VertexIndex==2) { - u=1.0; - gl_Position=vec4(1.0,1.0,0.0,1.0); - } else { - u=1.0; - gl_Position=vec4(1.0,-1.0,0.0,1.0); - } -} - -/* clang-format off */ -[fragment] -/* clang-format on */ - -#version 450 - -#define PI 3.14159265359 - -layout(set=0, binding=0) uniform sampler2D textures[4]; -layout(location = 0) in highp float u; -layout(location = 0) out highp float distance; - -layout(push_constant, binding = 0, std430) uniform Constants { - mat4 projection; - float far; - float pad[3]; -} constants; - -void main() { - - //0-1 in the texture we are writing to represents a circle, 0-2PI) - //obtain the quarter circle from the source textures - float angle=fract(u+1.0-0.125); - - float depth; -#if 0 - if (angle<0.25) { - highp float sub_angle = ((angle/0.25)*2.0-1.0)*(PI/4.0); - highp float x=tan(sub_angle)*0.5+0.5; - depth=texture(textures[0],vec2(x,0.0)).x; - } else if (angle<0.50) { - highp float sub_angle = (((angle-0.25)/0.25)*2.0-1.0)*(PI/4.0); - highp float x=tan(sub_angle)*0.5+0.5; - depth=texture(textures[1],vec2(x,0.0)).x; - } else if (angle<0.75) { - highp float sub_angle = (((angle-0.5)/0.25)*2.0-1.0)*(PI/4.0); - highp float x=tan(sub_angle)*0.5+0.5; - depth=texture(textures[2],vec2(x,0.0)).x; - } else { - highp float sub_angle = (((angle-0.75)/0.25)*2.0-1.0)*(PI/4.0); - highp float x=tan(sub_angle)*0.5+0.5; - depth=texture(textures[3],vec2(x,0.0)).x; - } -#else - if (angle<0.25) { - highp float sub_angle = ((angle/0.25)*2.0-1.0)*(PI/4.0); - vec2 pos = vec2(cos(sub_angle),sin(sub_angle))*constants.far; - vec4 proj = constants.projection * vec4(pos,0.0,1.0); - float coord = (proj.x/proj.w)*0.5+0.5; - depth=texture(textures[0],vec2(coord,0.0)).x; - } else if (angle<0.50) { - highp float sub_angle = (((angle-0.25)/0.25)*2.0-1.0)*(PI/4.0); - vec2 pos = vec2(cos(sub_angle),sin(sub_angle))*constants.far; - vec4 proj = constants.projection * vec4(pos,0.0,1.0); - float coord = (proj.x/proj.w)*0.5+0.5; - depth=texture(textures[1],vec2(coord,0.0)).x; - } else if (angle<0.75) { - highp float sub_angle = (((angle-0.5)/0.25)*2.0-1.0)*(PI/4.0); - vec2 pos = vec2(cos(sub_angle),sin(sub_angle))*constants.far; - vec4 proj = constants.projection * vec4(pos,0.0,1.0); - float coord = (proj.x/proj.w)*0.5+0.5; - depth=texture(textures[2],vec2(coord,0.0)).x; - } else { - highp float sub_angle = (((angle-0.75)/0.25)*2.0-1.0)*(PI/4.0); - vec2 pos = vec2(cos(sub_angle),sin(sub_angle))*constants.far; - vec4 proj = constants.projection * vec4(pos,0.0,1.0); - float coord = (proj.x/proj.w)*0.5+0.5; - depth=texture(textures[3],vec2(coord,0.0)).x; - } - - -#endif - distance=depth; -} |