From b9a6a837983bbfd7a8d8cf2666b97c21fd48a052 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 11 Feb 2024 17:57:50 -0500 Subject: [PATCH] GUI: new osc renderer, part 8 only update waveform[] when using old code --- src/gui/osc.cpp | 20 ++++++++++---------- src/gui/render/renderGL.cpp | 6 ++++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/gui/osc.cpp b/src/gui/osc.cpp index 3cb1393f1..7c1045cf2 100644 --- a/src/gui/osc.cpp +++ b/src/gui/osc.cpp @@ -293,16 +293,6 @@ void FurnaceGUI::drawOsc() { if ((oscWidth-24)>0) { if (settings.oscMono) { - for (int i=0; i0.5f) y=0.5f; - } - waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); - } - if (rend->supportsDrawOsc()) { _do.gui=this; _do.data=&oscValuesAverage[12]; @@ -314,6 +304,16 @@ void FurnaceGUI::drawOsc() { dl->AddCallback(_drawOsc,&_do); dl->AddCallback(ImDrawCallback_ResetRenderState,NULL); } else { + for (int i=0; i0.5f) y=0.5f; + } + waveform[i]=ImLerp(inRect.Min,inRect.Max,ImVec2(x,0.5f-y)); + } + if (settings.oscEscapesBoundary) { dl->PushClipRectFullScreen(); dl->AddPolyline(waveform,oscWidth-24,color,ImDrawFlags_None,dpiScale); diff --git a/src/gui/render/renderGL.cpp b/src/gui/render/renderGL.cpp index 0a5523c12..31a5eaadb 100644 --- a/src/gui/render/renderGL.cpp +++ b/src/gui/render/renderGL.cpp @@ -104,12 +104,14 @@ const char* sh_oscRender_srcF= "void main() {\n" " vec2 uv = fur_fragCoord/uResolution;\n" " vec2 tresh = vec2(uLineWidth)/uResolution;\n" + " float x1 = uv.x-uAdvance;\n" " float x2 = uv.x;\n" " float x3 = uv.x+uAdvance;\n" + " float val1 = texture2D(oscVal,vec2(x2,1.0)).x;\n" " float val2 = texture2D(oscVal,vec2(x2,1.0)).x;\n" " float val3 = texture2D(oscVal,vec2(x3,1.0)).x;\n" - " float valmax = max(val2,val3);\n" - " float valmin = min(val2,val3);\n" + " float valmax = max(max(val1,val2),val3);\n" + " float valmin = min(min(val1,val2),val3);\n" " float vald = abs(valmax-valmin);\n" " float alpha = 1.0-abs(uv.y-val2)/max(tresh.y,vald);\n" " if (vald>(1.0/uResolution.y)) {\n"