async void UpdateHalfmaps() { if (!IsInitialized) { return; } ProgressHalfmaps.Visibility = Visibility.Visible; bool DoLowpass = (bool)RadioHalfmap2Lowpass.IsChecked; float LowpassNyquist = (float)HalfmapPixelSize * 2 / HalfmapLowpass; await Task.Run(() => { Halfmap1Final?.Dispose(); Halfmap1Final = null; Halfmap2Final?.Dispose(); Halfmap2Final = null; if (Halfmap1 != null) { Halfmap1Final = Halfmap1.GetCopyGPU(); if (DoLowpass) { Halfmap1Final.Bandpass(0, LowpassNyquist, true); Halfmap2Final = Halfmap1Final.GetCopyGPU(); } } if (Halfmap2 != null && !DoLowpass) { Halfmap2Final = Halfmap2.GetCopyGPU(); } Dispatcher.Invoke(() => { RendererHalfmap1.Volume = Halfmap1Final; RendererHalfmap2.Volume = Halfmap2Final; }); }); ProgressHalfmaps.Visibility = Visibility.Hidden; RevalidateTab(); }
public void Dispose() { Halfmap1?.Dispose(); Halfmap2?.Dispose(); Mask?.Dispose(); }