feat(display): скорость водопада с max-hold накоплением + MSAA спектра

- настройка Speed (wf_speed_div 1/2/4/8, Waterfall→Rendering): замедление
  накапливает кадры max-hold'ом в SetWaterfallData — короткие посылки (CW)
  не выпадают из строки; двойная децимация MainForm убрана
  (EffectiveWfInterval, CPU-путь не быстрее полукадровой)
- настройка Anti-aliasing (spec_msaa 1/2/4/8, дефолт 4x, Spectrum→Rendering):
  MultiSampling на GL-контроле спектра; смена в рантайме пересоздаёт
  контекст → ResetGLCache обнуляет текстурные кэши без glDelete

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 16:48:55 +03:00
co-authored by Claude Fable 5
parent 092a202f5f
commit e260995218
6 changed files with 164 additions and 35 deletions
+7
View File
@@ -284,6 +284,8 @@ type
FWfPalette: Integer; // 0=Classic, 1=Inferno, 2=Turbo
FWfGamma: Double; // контраст палитры водопада
FDisplayPixels: Integer; // потолок точек анализатора
FWfSpeedDiv: Integer; // делитель скорости водопада (1/2/4/8, max-hold)
FSpecMSAA: Integer; // MSAA GL-спектра (1=off, 2, 4, 8)
FSpecRefLevel: Double;
FSpecRange: Double;
FSpecGridStep: Double;
@@ -692,6 +694,7 @@ begin
FPlutoTxMaxAttDb := -10.0; // ADI-дефолт: линейный режим выходных каскадов
FWfAGCEnabled := True; FDitherEnabled := True; FRandomEnabled := True;
FWfPalette := 0; FWfGamma := 1.0; FDisplayPixels := 4096;
FWfSpeedDiv := 1; FSpecMSAA := 4;
FFMStepOn := True;
FLocalAudio := True; // GUI: звук на локальную карту; демон выключит явно
FLastSMeter := -130; FLastSWR := 1; FLastSupplyV := -1; FLastSupplyA := -1;
@@ -1916,6 +1919,8 @@ begin
Result.WfPalette := FWfPalette;
Result.WfGamma := FWfGamma;
Result.DisplayPixels := FDisplayPixels;
Result.WfSpeedDiv := FWfSpeedDiv;
Result.SpecMSAA := FSpecMSAA;
Result.SpecRefLevel := FSpecRefLevel;
Result.SpecRange := FSpecRange;
Result.SpecGridStep := FSpecGridStep;
@@ -3505,6 +3510,8 @@ begin
FWfPalette := EnsureRange(FLoadedGlobal.WfPalette, 0, 2);
FWfGamma := EnsureRange(FLoadedGlobal.WfGamma, 0.3, 3.0);
FDisplayPixels := EnsureRange(FLoadedGlobal.DisplayPixels, 64, 4096);
FWfSpeedDiv := EnsureRange(FLoadedGlobal.WfSpeedDiv, 1, 8);
FSpecMSAA := EnsureRange(FLoadedGlobal.SpecMSAA, 1, 8);
if FWDSPReady then FDSPEngine.SetDisplayResLimit(FDisplayPixels);
FShowSpectrum := FLoadedGlobal.ShowSpectrum;
FShowWaterfall := FLoadedGlobal.ShowWaterfall;