protected sealed override void DrawSprites() {
if (Sprite == null) throw new NotSupportedException();
// drawing GUI
Sprite.HandleBlendState = false;
Sprite.HandleDepthStencilState = false;
DeviceContext.OutputMerger.SetTargets(_temporaryBuffer0.TargetView);
DeviceContext.ClearRenderTargetView(_temporaryBuffer0.TargetView, Color.Transparent);
DrawSpritesInner();
Sprite.Flush();
// blurring
DeviceContext.OutputMerger.BlendState = null;
DeviceContextHolder.GetHelper<BlurHelper>().Blur(DeviceContextHolder, _temporaryBuffer0, _temporaryBuffer1, target: _temporaryBuffer2, iterations: 2);
// as a shadow
_ppBasic.FxScreenSize.Set(new Vector4(Width, Height, 1f / Width, 1f / Height));
DeviceContext.OutputMerger.SetTargets(_temporaryBuffer1.TargetView);
DeviceContextHolder.QuadBuffers.Prepare(DeviceContext, _ppBasic.LayoutPT);
_ppBasic.FxInputMap.SetResource(_temporaryBuffer2.View);
_ppBasic.FxOverlayMap.SetResource(_temporaryBuffer0.View);
_ppBasic.TechShadow.DrawAllPasses(DeviceContext, 6);
// combining with _outputBuffer
ResetTargets();
DeviceContextHolder.PrepareQuad(_ppBasic.LayoutPT);
_ppBasic.FxInputMap.SetResource(_outputBuffer.View);
_ppBasic.FxOverlayMap.SetResource(_temporaryBuffer1.View);
_ppBasic.TechOverlay.DrawAllPasses(DeviceContext, 6);
}