summaryrefslogtreecommitdiff
path: root/src/render/Shaders.hpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-05 15:50:47 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-05 15:50:47 +0200
commit27c06758e4e2fb9cc06233ec967bde62f447de0f (patch)
treea623a30e6b562146f5086e3262666f2e439457f8 /src/render/Shaders.hpp
parent2313de589ecfb6664fea79c1e2f7aa991cf477cb (diff)
basic window rounded corners
Diffstat (limited to 'src/render/Shaders.hpp')
-rw-r--r--src/render/Shaders.hpp45
1 files changed, 43 insertions, 2 deletions
diff --git a/src/render/Shaders.hpp b/src/render/Shaders.hpp
index a9140aca..78892d5f 100644
--- a/src/render/Shaders.hpp
+++ b/src/render/Shaders.hpp
@@ -38,11 +38,52 @@ void main() {
inline const std::string TEXFRAGSRCRGBA = R"#(
precision mediump float;
-varying vec2 v_texcoord;
+varying vec2 v_texcoord; // is in 0-1
uniform sampler2D tex;
uniform float alpha;
+uniform vec2 topLeft;
+uniform vec2 bottomRight;
+uniform vec2 fullSize;
+uniform float radius;
+
void main() {
+
+ vec2 pixCoord = fullSize * v_texcoord;
+
+ if (pixCoord[0] < topLeft[0]) {
+ // we're close left
+ if (pixCoord[1] < topLeft[1]) {
+ // top
+ if (distance(topLeft, pixCoord) > radius) {
+ gl_FragColor = vec4(0,0,0,0);
+ return;
+ }
+ } else if (pixCoord[1] > bottomRight[1]) {
+ // bottom
+ if (distance(vec2(topLeft[0], bottomRight[1]), pixCoord) > radius) {
+ gl_FragColor = vec4(0,0,0,0);
+ return;
+ }
+ }
+ }
+ else if (pixCoord[0] > bottomRight[0]) {
+ // we're close right
+ if (pixCoord[1] < topLeft[1]) {
+ // top
+ if (distance(vec2(bottomRight[0], topLeft[1]), pixCoord) > radius) {
+ gl_FragColor = vec4(0,0,0,0);
+ return;
+ }
+ } else if (pixCoord[1] > bottomRight[1]) {
+ // bottom
+ if (distance(bottomRight, pixCoord) > radius) {
+ gl_FragColor = vec4(0,0,0,0);
+ return;
+ }
+ }
+ }
+
gl_FragColor = texture2D(tex, v_texcoord) * alpha;
})#";
@@ -66,4 +107,4 @@ uniform float alpha;
void main() {
gl_FragColor = texture2D(texture0, v_texcoord) * alpha;
-})#";
+})#"; \ No newline at end of file