private void UpdateNewAverateColor(DeviceContextHolder holder, ShaderResourceView view) {
for (var i = 0; i <= DownsamplerAdaptationCycles; i++) {
var currentRt = i == DownsamplerAdaptationCycles ? _newAverageColor : _textures[i];
holder.DeviceContext.Rasterizer.SetViewports(new Viewport(0, 0, currentRt.Width, currentRt.Height, 0.0f, 1.0f));
holder.DeviceContext.OutputMerger.SetTargets(currentRt.TargetView);
_effect.FxPixel.Set(new Vector2(1f / currentRt.Width, 1f / currentRt.Height));
_effect.FxInputMap.SetResource(i == 0 ? view : _textures[i - 1].View);
_effect.FxCropImage.Set(new Vector2(i == 0 ? 0.5f : 1f));
_effect.TechDownsampling.DrawAllPasses(holder.DeviceContext, 6);
}
}