From c606ec8f3f9b559fe61dbc0b6b076235ecf5b548 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 10 Feb 2024 18:36:02 -0500 Subject: [PATCH] GUI: new osc renderer, part 6 port shader to OpenGL 3.0 --- src/gui/render/renderGL.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/gui/render/renderGL.cpp b/src/gui/render/renderGL.cpp index 3e68106b7..990ea1d23 100644 --- a/src/gui/render/renderGL.cpp +++ b/src/gui/render/renderGL.cpp @@ -151,24 +151,26 @@ const char* sh_oscRender_srcF= "uniform vec4 uColor;\n" "uniform vec2 uResolution;\n" "uniform float uLineWidth;\n" - "uniform sampler1D oscVal;\n" + "uniform float uAdvance;\n" + "uniform sampler2D oscVal;\n" "in vec2 fur_fragCoord;\n" "out vec4 fur_FragColor;\n" "void main() {\n" - " vec2 uv = fur_fragCoord/uResolution.xy;\n" - " vec2 tresh = vec2(uLineWidth)/uResolution.xy;\n" - " float xoff = tresh.x/2.0;\n" - " float x1 = uv.x-xoff;\n" + " vec2 uv = fur_fragCoord/uResolution;\n" + " vec2 tresh = vec2(uLineWidth)/uResolution;\n" " float x2 = uv.x;\n" - " float x3 = uv.x+xoff;\n" - " float val1 = texture(oscVal,vec2(x1,1.0)).x;\n" - " float val2 = texture(oscVal,vec2(x2,1.0)).x;\n" - " float val3 = texture(oscVal,vec2(x3,1.0)).x;\n" - " float valmax = max(max(val1,val2),val3);\n" - " float valmin = min(min(val1,val2),val3);\n" + " float x3 = uv.x+uAdvance;\n" + " float val2 = texture(oscVal,x2).x;\n" + " float val3 = texture(oscVal,x3).x;\n" + " float valmax = max(val2,val3);\n" + " float valmin = min(val2,val3);\n" " float vald = abs(valmax-valmin);\n" " float alpha = 1.0-abs(uv.y-val2)/max(tresh.y,vald);\n" - " fur_FragColor = vec4(uColor.xyz,uColor.w*alpha);\n" + " if (vald>(1.0/uResolution.y)) {\n" + " fur_FragColor = vec4(1.0,0.0,0.0,uColor.w*alpha);\n" + " } else {\n" + " fur_FragColor = vec4(uColor.xyz,uColor.w*alpha);\n" + " }\n" "}\n"; #endif