diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index bbc9cd6bb..a75698111 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -606,7 +606,7 @@ void FurnaceGUI::drawChanOsc() { ImGui::ItemSize(size,style.FramePadding.y); if (ImGui::ItemAdd(rect,ImGui::GetID("chOscDisplay"))) { if (!e->isRunning()) { - if (settings.shaderOsc) { + if (rend->supportsDrawOsc() && settings.shaderOsc) { memset(fft->oscTex,0,2048*sizeof(float)); } else { for (unsigned short j=0; j0.0000001) maxavg=0.5/maxavg; - if (settings.shaderOsc) { + if (rend->supportsDrawOsc() && settings.shaderOsc) { for (unsigned short j=0; j=precision/2) { @@ -680,7 +680,7 @@ void FurnaceGUI::drawChanOsc() { } dcOff=(minLevel+maxLevel)*0.5f; - if (settings.shaderOsc) { + if (rend->supportsDrawOsc() && settings.shaderOsc) { for (unsigned short j=0; jdata[(unsigned short)(fft->needle+(j*displaySize/precision))]/32768.0f; y-=dcOff; diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index 1a611b264..0bd4afc6c 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -583,6 +583,10 @@ void FurnaceGUI::drawMobileControls() { if (ImGui::Button("XYOsc")) { xyOscOpen=!xyOscOpen; } + ImGui::SameLine(); + if (ImGui::Button("Meter")) { + volMeterOpen=!volMeterOpen; + } ImGui::Separator(); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index e2b30f834..cebb80b38 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4629,6 +4629,7 @@ bool FurnaceGUI::loop() { MEASURE(osc,drawOsc()); MEASURE(chanOsc,drawChanOsc()); MEASURE(xyOsc,drawXYOsc()); + MEASURE(volMeter,drawVolMeter()); MEASURE(grooves,drawGrooves()); MEASURE(regView,drawRegView()); } else { diff --git a/src/gui/osc.cpp b/src/gui/osc.cpp index e6924d91e..314b128d1 100644 --- a/src/gui/osc.cpp +++ b/src/gui/osc.cpp @@ -307,7 +307,7 @@ void FurnaceGUI::drawOsc() { } else { for (int i=0; i0.5f) y=0.5f; diff --git a/src/gui/render/renderGL.cpp b/src/gui/render/renderGL.cpp index 4633f6ab4..4e7999d46 100644 --- a/src/gui/render/renderGL.cpp +++ b/src/gui/render/renderGL.cpp @@ -95,6 +95,7 @@ const char* sh_oscRender_srcV= // thank you akumanatt const char* sh_oscRender_srcF= + "precision highp float;\n" "uniform vec4 uColor;\n" "uniform vec2 uResolution;\n" "uniform float uLineWidth;\n" @@ -116,8 +117,7 @@ const char* sh_oscRender_srcF= " float slope=abs(valmax-valmin)*uResolution.y*0.5;\n" " float slopeDiv=min(uAdvance,(uAdvance/slope));\n" " float xRight=uv.x+((uLineWidth)/uResolution.x);\n" - " for (float s=0.0; s