//--------------------------------------------------------------
        #region Creation & Cleanup
        //--------------------------------------------------------------

        /// <summary>
        /// Initializes a new instance of the <see cref="DepthOfFieldFilter"/> class.
        /// </summary>
        /// <param name="graphicsService">The graphics service.</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="graphicsService"/> is <see langword="null"/>.
        /// </exception>
        public DepthOfFieldFilter(IGraphicsService graphicsService)
            : base(graphicsService)
        {
            _effect = GraphicsService.Content.Load <Effect>("DigitalRune/PostProcessing/DepthOfFieldFilter");
            _screenSizeParameter        = _effect.Parameters["ScreenSize"];
            _depthTextureParameter      = _effect.Parameters["DepthTexture"];
            _nearBlurDistanceParameter  = _effect.Parameters["NearBlurDistance"];
            _nearFocusDistanceParameter = _effect.Parameters["NearFocusDistance"];
            _farFocusDistanceParameter  = _effect.Parameters["FarFocusDistance"];
            _farBlurDistanceParameter   = _effect.Parameters["FarBlurDistance"];
            _farParameter                     = _effect.Parameters["Far"];
            _blurTextureParameter             = _effect.Parameters["BlurTexture"];
            _downsampledDepthTextureParameter = _effect.Parameters["DownsampledDepthTexture"];
            _downsampledCocTextureParameter   = _effect.Parameters["DownsampledCocTexture"];
            _offsetsParameter                 = _effect.Parameters["Offsets"];
            _weightsParameter                 = _effect.Parameters["Weights"];
            _sceneTextureParameter            = _effect.Parameters["SceneTexture"];
            _circleOfConfusionPass            = _effect.CurrentTechnique.Passes["CircleOfConfusion"];
            _blurPass         = _effect.CurrentTechnique.Passes["Blur"];
            _depthOfFieldPass = _effect.CurrentTechnique.Passes["DepthOfField"];

            _downsampleFilter = PostProcessHelper.GetDownsampleFilter(graphicsService);

            _cocBlur = new Blur(graphicsService);
            _cocBlur.InitializeBoxBlur(5, false);

            NearBlurDistance  = 2;
            NearFocusDistance = 5;
            FarFocusDistance  = 6;
            FarBlurDistance   = 10;
            _downsampleFactor = 2;
            BlurStrength      = 1;
        }
Example #2
0
        //--------------------------------------------------------------
        /// <summary>
        /// Initializes a new instance of the <see cref="DepthOfFieldFilter"/> class.
        /// </summary>
        /// <param name="graphicsService">The graphics service.</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="graphicsService"/> is <see langword="null"/>.
        /// </exception>
        public DepthOfFieldFilter(IGraphicsService graphicsService)
            : base(graphicsService)
        {
            _effect = GraphicsService.Content.Load<Effect>("DigitalRune/PostProcessing/DepthOfFieldFilter");
              _screenSizeParameter = _effect.Parameters["ScreenSize"];
              _depthTextureParameter = _effect.Parameters["DepthTexture"];
              _nearBlurDistanceParameter = _effect.Parameters["NearBlurDistance"];
              _nearFocusDistanceParameter = _effect.Parameters["NearFocusDistance"];
              _farFocusDistanceParameter = _effect.Parameters["FarFocusDistance"];
              _farBlurDistanceParameter = _effect.Parameters["FarBlurDistance"];
              _farParameter = _effect.Parameters["Far"];
              _blurTextureParameter = _effect.Parameters["BlurTexture"];
              _downsampledDepthTextureParameter = _effect.Parameters["DownsampledDepthTexture"];
              _downsampledCocTextureParameter = _effect.Parameters["DownsampledCocTexture"];
              _offsetsParameter = _effect.Parameters["Offsets"];
              _weightsParameter = _effect.Parameters["Weights"];
              _sceneTextureParameter = _effect.Parameters["SceneTexture"];
              _circleOfConfusionPass = _effect.CurrentTechnique.Passes["CircleOfConfusion"];
              _blurPass = _effect.CurrentTechnique.Passes["Blur"];
              _depthOfFieldPass = _effect.CurrentTechnique.Passes["DepthOfField"];

              _downsampleFilter = PostProcessHelper.GetDownsampleFilter(graphicsService);

              _cocBlur = new Blur(graphicsService);
              _cocBlur.InitializeBoxBlur(5, false);

              NearBlurDistance = 2;
              NearFocusDistance = 5;
              FarFocusDistance = 6;
              FarBlurDistance = 10;
              _downsampleFactor = 2;
              BlurStrength = 1;
        }